UC(使用者控制項, User control) 與 輸出快取(Output Cache) -- PartialCachingAttribute類別

摘要:UC(使用者控制項, User control) 與 輸出快取(Output Cache) -- PartialCachingAttribute類別

四個屬性與 @outPutCache 指示詞互相對應 --
duration
varyByParams
varyByControls
varyByCustom

 

今天看書的時候,看到 UC(使用者控制項,User Control) 與 輸出快取(Output Cache)

找了一下資料,發現微軟msdn文件其實寫的更詳細

不過,這個範例裡面的VB程式碼有小錯誤,我也在文章作了改善。

 

資料來源:

 
 
Web Form 使用者控制項 (.ascx 檔案) 會使用此屬性來指示是否會快取其輸出,以及其快取的方式。
 
 
 
簡單的來說,
上面的範例告訴我們
 
UC(使用者控制項)可以搭配Output Cache(輸出快取)
 
1.  您可以在UC(.ascx檔)的HTML畫面中設定 <% @ OutPutCache指示詞來達成
 
下列 @ OutputCache 指示詞會將使用者控制項的期限設為 60 秒,並依據 ID 為 TextBox1 的 ASP.NET 伺服器控制項變更控制項的輸出:
<%@ OutputCache Duration="60" VaryByControl="TextBox1" %>
 
 
 
2.  也可以在UC(.ascx檔)撰寫後置程式碼來達成 (請用 PartialCachingAttribute類別)
 
下列程式碼範例會將 Duration 設為 60 秒,並將 VaryByControls 設為(控制項的ID) TextBox1。
加入此程式碼的位置應該在擴充 UserControl 類別的程式碼之前
 
C#語法如下(後置程式碼):
[PartialCaching(60, null, TexTBox1, null)]
 
public partial class XXXXXX : System.Web.UI.UserControl
 
 
VB語法如下(後置程式碼):
<PartialCaching(60, Nothing, TexTBox1, Nothing)>  註解:微軟msdn誤植為 null。VB語法應該是 Nothing
 
Public Class XXXXXX
    Inherits UserControl
 
 
 
 
四個參數,對應<%@ OutputCache 指示詞的四個屬性,請看原廠說明

http://msdn.microsoft.com/zh-tw/library/yk56sw9b(v=vs.110).aspx

參數

duration
類型:System.Int32
快取使用者控制項的時間長度,以秒為單位。
varyByParams
類型:System.String
用來變更輸出快取的分號分隔的字串清單。 根據預設值,這些字串會對應至以 GET 方法屬性所傳送的查詢字串值,或對應至使用 POST 方法所傳送的參數。 當這個屬性被設定為多個參數時,輸出快取會包含每一指定參數所要求文件的不同版本。 可能的值包括 "none"、"*",以及任何有效的查詢字串,或 POST 參數名稱。
varyByControls
類型:System.String
用來變更輸出快取的 "分號(;) "分隔的字串清單。 這些字串是表示使用者控制項上屬性的完整 ID名稱。 當這個參數使用於使用者控制項時,使用者控制項輸出會針對每一個指定使用者控制項屬性的快取而改變。
varyByCustom
類型:System.String
表示自訂輸出快取需求的任何文字。 如果這個參數取得 "browser" 的值設,則快取會根據瀏覽器名稱和主要版本資訊而有所不同。 如果自訂字串已輸入,則您必須在您應用程式的 Global.asax 檔中覆寫 HttpApplication.GetVaryByCustomString 方法。

 

 

<%@ OutputCache 指示詞的四個屬性
  名  稱 說   明    資料來源:微軟MSDN網站
Public property CacheProfile 取得或設定與輸出快取項目設定關聯的 OutputCacheProfile 名稱。
Public property Duration 取得或設定快取項目保留在輸出快取中的時間。
Public property Enabled 取得或設定值,指出是否啟用目前內容的輸出快取。
Public property Location 取得或設定數值,判斷快取項目的位置。
Public property NoStore 取得或設定數值,判斷是否已設定 HTTP Cache-Control: no-store 指示詞。
Public property SqlDependency 取得或設定快取項目相依的一組成對資料庫和資料表名稱。
Public property VaryByControl 取得或設定一組以 "分號" 分隔的控制識別項,其包含在目前頁面或使用者控制項中,用來變更目前快取項目。
Public property VaryByCustom 取得輸出快取用來變更快取項目的自訂字串清單。
Public property VaryByHeader 取得或設定一組以 "逗號" 分隔的標頭名稱,用來變更快取項目。標頭名稱會識別與要求關聯的 HTTP 標頭。
Public property VaryByParam 取得以 "逗號" 分隔的查詢字串或表單(POST or GET)張貼參數清單,輸出快取會使用此清單變更快取項目。 ex:  none / * / 參數名稱

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程教學,遠距教學 (Web Form 約 51hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程教學,遠距教學 (ASP.NET MVC 約 140hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.tw  或  school (at) mis2000lab.net

 (1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A 

 (2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I 

[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm  。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b  


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

.........   facebook社團   https://www.facebook.com/mis2000lab   ......................

.........  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)。

...................................................................................................................................................... 

ASP.NET MVC  => .NET Core MVC 線上教學  ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講   事先錄好的影片,並非上課側錄!   觀看時,有如「一對一」面對面講課