共用方式為


HOW TO:根據參數快取使用者控制項的多個版本

更新:2007 年 11 月

有兩種方法可讓您變更使用者控制項輸出的快取:

  • 指定使用者控制項名稱,以及查詢字串或表單 POST 參數。您可以使用 @ OutputCache 指示詞的 VaryByParam 屬性 (Attribute),以宣告方式進行此動作。此外,您也可以透過在使用者控制項的程式碼中設定 PartialCachingAttributeVaryByParams 屬性 (Property),以程式設計的方式進行此動作。

  • 指定內含在使用者控制項之 ASP.NET 伺服器控制項的 ID 屬性。您可以使用 VaryByControl 屬性,以宣告方式執行此動作。此外,也可以透過設定 PartialCachingAttribute 中的 VaryByControls 屬性,以程式設計的方式執行此動作。

    注意事項:

    根據查詢字串或表單 POST 參數變更快取之使用者控制項輸出的前提,是使用者控制項進行回傳,並自行處理回傳內容。如果使用者控制項回傳至包含此控制項的網頁,這種類型的使用者控制項輸出快取將無法正常運作。

若要使用 VaryByControl 屬性以宣告方式快取多個版本的使用者控制項

  1. 建立會進行回傳的使用者控制項。

  2. 將具有 DurationVaryByControl 屬性的 @ OutputCache 指示詞包含在使用者控制項中。

    注意事項:

    如果在指示詞中使用 VaryByControl 屬性,您就不需再將 VaryByParam 屬性納入 (即使您可以將它加入並設為 "None")。

  3. VaryByControl 屬性設定為您要據以變更使用者控制項輸出的控制項 ID。

    例如,下列 @ OutputCache 指示詞會將使用者控制項的期限設為 60 秒,並依據 ID 為 State 的 ASP.NET 伺服器控制項變更控制項的輸出:

    <%@ OutputCache Duration="60" VaryByControl="State" %>
    

若要使用 VaryByControls 屬性以程式設計方式快取多個版本的使用者控制項

  1. 在程式碼中,建立會回傳至本身的使用者控制項程式碼。

  2. PartialCachingAttribute包含在使用者控制項程式碼的開頭。

  3. 納入 Duration 參數的值,並且將 VaryByControls 參數設定為在使用者控制項中,您要據以變更使用者控制項輸出之 ASP.NET 伺服器控制項的 ID。

    下列程式碼範例會將 Duration 設為 60 秒,並將 VaryByControls 設為 State。加入此程式碼的位置應該在擴充 UserControl 類別的程式碼之前。

    [PartialCaching(60, null, State, null)]
    
    <PartialCaching(60, null, State, null)>
    

若要使用 VaryByParam 屬性以宣告方式快取多個版本的使用者控制項

  1. 建立回傳至自身的使用者控制項。

  2. 將具有 DurationVaryByParam 屬性的 @ OutputCache 指示詞包含在使用者控制項中。

    注意事項:

    如果您在使用者控制項的 @ OutputCache 指示詞中包含 VaryByControl 屬性,就不需要再將 VaryByParam 屬性納入。

  3. VaryByParam 屬性設為您想要據以變更使用者控制項的 GET 查詢字串或表單 POST 參數。

    例如,下列 @ OutputCache 指示詞會將使用者控制項的期限設為 60 秒,並依據名為 State 的表單 POST 或查詢字串參數變更控制項的輸出。

    <%@ OutputCache Duration="60" VaryByParam="State" %>
    

若要使用 VaryByParams 屬性以程式設計方式快取多個版本的使用者控制項

  1. 在程式碼中,建立會回傳至本身的使用者控制項程式碼。

  2. PartialCachingAttribute包含在使用者控制項程式碼的開頭。

  3. 包含 Duration 參數的值,並將 VaryByParams 參數設為您要據以變更使用者控制項輸出的 GET 查詢字串或表單 POST 參數。

    下列程式碼範例會將 Duration 設為 60 秒,並將 VaryByParams 設為名為 State 的表單 POST 或查詢字串參數。加入此程式碼的位置應該在擴充 UserControl 類別的程式碼之前。

    [PartialCaching(60, State, null, null)]
    
    <PartialCaching(60, State, null, null)>
    

請參閱

工作

HOW TO:使用宣告式屬性快取使用者控制項的多個版本

概念

ASP.NET 快取概觀

快取 ASP.NET Web 網頁

快取網頁的多個版本

快取使用者控制項輸出的多個版本