共用方式為


HOW TO:使用參數快取頁面的多個版本

更新:2007 年 11 月

您有時會想快取頁面,但頁面可能會根據查詢字串參數的值或回傳時與頁面一起傳送的值,產生不同的輸出。例如,如果您有一個會根據使用者所在州別來顯示商店位置的頁面,則此頁面有可能接受會針對各州而產生不同版本之頁面的「州別」查詢字串值。

您可以根據當做查詢字串值或表單張貼值傳送的參數,快取多個版本的頁面回應。

注意事項:

不論傳遞參數的順序為何,對於快取目的而言,ASP.NET 會將具有相同索引鍵/值組之查詢字串值或表單張貼值都視為相同的。不過,對於快取目的而言,參數名稱會區分大小寫,而且 ASP.NET 將會針對大寫和小寫的參數名稱和值,快取不同版本的頁面。

若要使用參數以宣告方式快取多個版本的頁面輸出

  1. 將 Duration 屬性 (Attribute) 的 @ OutputCache 指示詞包含在 ASP.NET Web 網頁中。Duration 屬性是必要的且必須設定為大於零的整數。

  2. @ OutputCache 指示詞中,納入 VaryByParam 屬性,並將它的值設定為查詢字串或表單張貼參數的名稱,而頁面會根據查詢字串或表單張貼參數的名稱而有所不同。

    下列程式碼範例會快取頁面 60 秒,並會指定不同版本的頁面輸出將根據 City 查詢字串值或表單張貼參數來快取。

    <%@ OutputCache Duration="60" VaryByParam="City" %>
    
    注意事項:

    如果您想要輸出快取根據多個參數而改變,請包含以分號 (;) 分隔的參數名稱清單。若要根據所有的參數值來改變快取,請將 VaryByParam 屬性設定為星號 (*)。下列程式碼範例會顯示如何根據 City 和 ZipCode 參數來改變頁面輸出。

若要使用參數以程式設計方式快取多個版本的頁面輸出

  1. 在頁面的 Page_Load 事件中,呼叫 Response 物件之 Cache 屬性 (Property) 上的 SetCacheabilitySetExpires 方法。

  2. 指定參數名稱做為 Response 物件之 VaryByParams 屬性的引數,並將屬性設定為 true。

    下列程式碼範例會顯示當伺服器收到具有不同 Zip 參數值的要求時,如何快取多個版本的頁面。

    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetValidUntilExpires(true);
    Response.Cache.VaryByParams["Zip"] = true;
    
    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0))
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.SetValidUntilExpires(True)
    Response.Cache.VaryByParams("Zip") = True
    
    注意事項:

    如果您想根據多個參數改變快取的內容,請設定 VaryByParams 屬性數次。如果您想要快取的內容根據所有標頭值而有所不同,請將 VaryByHeader 屬性設定為星號 (*)。下列程式碼範例會顯示如何根據 City 和 Zip 參數來改變頁面輸出。

請參閱

工作

HOW TO:以宣告方式設定 ASP.NET 網頁的快取性

HOW TO:以程式設計方式設定頁面的快取性

HOW TO:使用要求的瀏覽器快取頁面的多個版本

HOW TO:使用 HTTP 標頭快取頁面的多個版本

HOW TO:使用自訂字串快取頁面的多個版本

概念

快取 ASP.NET Web 網頁

設定網頁的快取性

快取網頁的多個版本