程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET:頁面緩存

ASP.NET:頁面緩存

編輯:關於ASP.NET

ASP.NET 提供三種主要形式的緩存:頁面緩存、用戶控件輸出緩存和緩存 API。

頁面輸出緩存作為最簡單的緩存形式,將已經生成的動/靜太頁面全部內容保存在服務器內容中。當再有請求時,系統將緩存中的相關數據直接輸出,直到緩存數據過期。在這個過程中,緩存不再要再次經過頁面處理生命周期。這樣可以縮短請求響應時間,提高應用程序性能。顯然,頁面輸出緩存適用於不需要頻繁更新數據,而占用大量時間和資源才能編譯生成的頁面。

實現頁面輸出緩存,通常可以用以下兩種方法:

一、使用@ OutputCache指令

使用@ OutputCache指令,能夠實現對頁面輸出緩存的一般性需要。@ OutputCache指令在ASP.NET頁或者頁中包含的用戶控件的頭部聲明。這種方式非常方便,只需幾個簡單的屬性設置,就能夠實現頁面的輸出緩存策略。

二、使用HttpCacheability類

該類主要包含用於設置緩存特定的HTTP標頭的方法和用於控制ASP.NET頁面輸出緩存的方法。與.NET Framework 1.x中的HttpCachePolicy類相比,.NET Framework 2.0中的HttpCachePolicy類得到了擴充和發展。

使用這兩種方法,我們可以實現下列功能:

1、使用參數對頁的各個版本進行緩存

使用 ASP.NET,您可以根據指定的 HTTP 標頭的值對某頁的多個版本進行緩存。當請求頁時,您可以指定按傳遞到應用程序的單個標頭、多個標頭或所有標頭進行緩存。

根據 HTTP 標頭值以聲明方式對某頁的各個版本進行緩存

A、 在 ASP.NET 頁中,在 @ OutputCache 指令中包括必需的 Duration 和 VaryByParam 或 VaryByControl 屬性。必須將 Duration 屬性設置為大於零的整數。如果希望只按 HTTP 標頭值進行緩存,則必須將 VaryByParam 屬性設置為“None”。

B、 在 @ OutputCache 指令中,包含 VaryByHeader 屬性,將其值設置為要作為改變緩存內容的依據的 HTTP 標頭的名稱。

下面的示例將頁緩存 60 秒,並根據隨 Accept-Language HTTP 標頭傳遞的值設置要緩存的頁的版本:

<%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %>

注意:如果要根據多個標頭改變緩存的內容,請以分號 (;) 作為分隔符包括標頭名稱的列表。如果要根據所有標頭值改變緩存的內容,請將 VaryByHeader 屬性設置為星號 (*)。

根據 HTTP 標頭值以編程方式對某頁的各個版本進行緩存

A、 在頁的 Page_Load 方法中,對頁的 Response 對象的 Cache 屬性調用 SetCacheability 和 SetExpires 方法。

B、 將 VaryByHeaders 屬性中的 HTTP 標頭值設置為 true。

下面的代碼示例演示如何為有不同的 Accept-Language HTTP 標頭值的請求,將某頁的多個版本緩存一分鐘之久。

  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.VaryByHeaders["Accept-Language"] = true;
  }

注意:如果要根據多個標頭改變緩存的內容,需要在 VaryByHeaders 屬性中設置多個值。如果要根據所有標頭改變緩存的內容,請將 VaryByHeaders["VaryByUnspecifiedParameters"] 設置為 true。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved