HOW TO:使用要求的瀏覽器快取頁面的多個版本
更新:2007 年 11 月
如果 Web 應用程式包含根據提出要求之瀏覽器的類型而建立不同輸出的網頁,您可以根據要求網頁的瀏覽器主要版本,快取網頁輸出的多個版本。例如,當 Internet Explorer 6 瀏覽器要求網頁時,就會快取網頁的一個版本。Netscape Navigator 瀏覽器、其他版本的 Internet Explorer 或任何其他的瀏覽器要求這個網頁時,另一個版本的網頁會被加入輸出快取。
注意事項: |
---|
主要版本和瀏覽器類型資訊,是經由目前要求中之 HttpBrowserCapabilities 物件的 MajorVersion 屬性傳遞。如需詳細資訊,請參閱 HOW TO:在 ASP.NET Web 網頁中偵測瀏覽器類型。 |
若要根據瀏覽器類型,以宣告方式快取網頁的多個版本
在 ASP.NET Web 網頁中,使用必要的 Duration 和 VaryByParam 或 VaryByControl 屬性包含 @ OutputCache 指示詞。Duration 屬性必須設定為大於零的整數。如果您只想根據瀏覽器類型進行快取,請將 VaryByParam 屬性設定為 "None"。
在 @ OutputCache 指示詞中,包含 VaryByCustom 屬性並將值設定為 "browser"。
下列程式碼範例會導致快取網頁 10 秒鐘。輸出會根據瀏覽器類型而有所不同。
<%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>
若要根據瀏覽器類型,以程式設計方式快取網頁的多個版本
在網頁的程式碼中,呼叫網頁 Response 屬性之 Cache 屬性上的 SetExpires 和 SetCacheability 方法。
呼叫 SetVaryByCustom 方法,在 custom 參數中傳遞 "browser" 值。
下列程式碼範例示範如何將網頁的多個版本快取一分鐘。輸出會根據提出要求的瀏覽器類型而有所不同。
protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); Response.Cache.SetVaryByCustom("browser"); }
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) Response.Cache.SetVaryByCustom("browser") End Sub