共用方式為


快取 ASP.NET 網頁

您可透過 ASP.NET,把使用 HTTP 1.1 的機制 (包括瀏覽器、Proxy 伺服器和您應用程式所在的原始 Web 伺服器) 上的動態網頁整份回應內容,全都快取起來。如此一來,Web 應用程式的效能便可大幅提升。這項功能便是輸出快取,該項功能能以快取滿足對特定網頁提出的後續要求,且後續要求不需要將當初建立網頁的程式碼重新執行一次。使用這種技巧來快取您網站上經常存取的網頁,可以提升 Web 伺服器的輸送量 (一般以每秒要求來計算數量)。

您可以選擇使用高階的宣告式 API,也可以選擇低階的程式設計 API 來操作網頁的輸出快取。使用前者的方法是將 @ OutputCache 指示詞加入網頁的 .aspx 檔案。這樣 @ OutputCache 指示詞即可在您快取網頁輸出時,滿足幾乎所有的一般需求。下列指示詞包含在 .aspx 檔案中時,可將動態產生網頁的快取輸出設定為 60 秒到期。

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

警告 使用 @ OutputCache 指示詞時,需要使用 DurationVaryByParam 屬性 (Attribute)。如果沒有包含這兩個屬性,則第一次要求網頁時會發生剖析器 (Parser) 錯誤。如果不想使用 VaryByParam 屬性提供的功能,則必須將其值設定為 None。如需使用 VaryByParam 屬性的詳細資訊,請參閱快取網頁的多個版本

ASP.NET 也包含一組 API,可透過 HttpCachePolicy 類別,以程式設計的方式控制網頁的輸出快取到期和原則。這個類別及其方法和屬性均可透過 HttpResponse.Cache 屬性取得。相反地,您也可以透過 Page.Response 屬性,從 Page 物件存取這個屬性。

例如,下列程式碼被加入網頁的程式碼宣告區塊或它的程式碼後置 (Code-Behind) 類別後,便可使用 HttpCachePolicy.SetExpires 方法將動態產生的網頁設定為 60 秒到期。

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
[Visual Basic]
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))

一旦啟用輸出快取後,這個網頁的初始 HTTP GET 要求會將其動態內容,依照您指定的時間放在輸出快取中。輸出快取能滿足後續針對這個網頁發出的 GET、HEAD 或 POST 要求,直到超過您指定的時間。

您可以使用宣告或以程式設計的方式,在要求資料流中啟用或停用可進行快取之裝置的網頁輸出快取。在網頁的 @ OutputCache 指示詞 (Directive) 中,可以使用 Location 屬性來指定是否可在 Proxy 伺服器、瀏覽器用戶端、起始 Web 伺服器上 (或是以上皆可或以上皆否) 快取網頁的輸出。您也可以用程式設計的方式進行相同的作業,方法是使用 HttpCachePolicy.SetCacheability 方法為網頁指定適當的 HttpCacheability 列舉值。如需詳細資訊,請參閱設定網頁的快取性

您也能將具有查詢字串參數的 GET 要求、或具有參數的表單 POST 要求所產生的回應加入快取,但是您必須使用 @ OutputCache 指示詞的 VaryByParam 屬性,明確地啟用對傳遞屬性的快取。如需詳細資訊,請參閱快取網頁的多個版本

請記得,只要是以程式設計的方式操作輸出快取,就必須在 .aspx 檔案的程式碼宣告區塊中進行,或在 .aspx 檔案關聯的程式碼後置類別中進行。

請參閱

設定網頁快取的到期 | 設定網頁的快取性 | 快取網頁的多個版本 | ASP.NET 快取功能 | @ OutputCache 指示詞