共用方式為


動態更新快取頁面的部分內容

更新:2007 年 11 月

快取網頁可以大幅提高 Web 應用程式的效能,不過,在某些情況下,您可能需要快取大部分的網頁,並讓網頁內的某些片段保持動態 (Dynamic)。例如,如果建立在一段時間內完全保持靜態 (Static) 的新聞報導網頁,就可以設定快取整個網頁。如果要加入隨每個網頁要求而變更的輪換廣告橫幅,則包含廣告的網頁部分需要保持動態。

若要快取網頁但動態替代某些內容,可以使用 ASP.NET 快取後置替換 (Post-cache Substitution)。使用快取後置替換時,會輸出快取整個網頁,並將其中特定部分標記為免於快取。在廣告橫幅的範例中,AdRotator 控制項可讓您利用快取後置替換,為每個使用者以及在每次網頁重新整理時動態建立廣告。

有三種方法可用來實作快取後置替換:

  • 使用 Substitution 控制項以宣告方式實作。

  • 使用 Substitution 控制項 API 以程式設計方式實作。

  • 使用 AdRotator 控制項以隱含方式實作。

替代控制項

ASP.NET Substitution 控制項會指定非被快取而是以動態方式建立的快取網頁區段,您可以將 Substitution 控制項放在希望動態內容顯示之處的網頁位置。

在執行階段,Substitution 控制項會呼叫使用 MethodName 屬性所指定的方法,該方法必須傳回字串 (String),然後該字串會取代 Substitution 控制項的內容。在包含的 PageUserControl 控制項上,該方法必須是靜態方法。

使用替代控制項會導致用戶端快取性變更為伺服器快取性,如此一來,網頁便不會在用戶端被快取。這可確保未來要求網頁時,會再次呼叫該方法以產生動態內容。

替代 API

若要以程式設計方式建立快取網頁的動態內容,可以在網頁程式碼中呼叫 WriteSubstitution 方法,將方法的名稱當做參數傳遞給它。處理動態內容之建立的方法會使用單一 HttpContext 參數,並傳回字串,該傳回字串是將在指定之位置被替代的內容。呼叫 WriteSubstitution 方法而不以宣告方式使用 Substitution 控制項的優點,在於您可以呼叫任何任意物件的方法,而不用呼叫 PageUserControl 物件的靜態方法。

呼叫 WriteSubstitution 方法會導致用戶端快取性變更為伺服器快取性,以便不會在用戶端快取網頁。這可確保未來要求網頁時,會再次呼叫該方法以產生動態內容。

AdRotator 控制項

AdRotator 伺服器控制項會在內部實作快取後置替換的支援。如果您將 AdRotator 控制項放在網頁上,它會針對每個要求呈現唯一的廣告,不論是否已快取父代網頁。因此,包含 AdRotator 控制項的網頁只會在伺服器端快取。

請參閱

概念

ASP.NET 快取概觀

快取 ASP.NET Web 網頁

快取網頁的多個版本

ASP.NET Web 網頁的快取部分

快取應用程式資料

以 SqlCacheDependency 類別在 ASP.NET 中快取