動態更新快取頁面的部分內容
更新:2007 年 11 月
快取網頁可以大幅提高 Web 應用程式的效能,不過,在某些情況下,您可能需要快取大部分的網頁,並讓網頁內的某些片段保持動態 (Dynamic)。例如,如果建立在一段時間內完全保持靜態 (Static) 的新聞報導網頁,就可以設定快取整個網頁。如果要加入隨每個網頁要求而變更的輪換廣告橫幅,則包含廣告的網頁部分需要保持動態。
若要快取網頁但動態替代某些內容,可以使用 ASP.NET 快取後置替換 (Post-cache Substitution)。使用快取後置替換時,會輸出快取整個網頁,並將其中特定部分標記為免於快取。在廣告橫幅的範例中,AdRotator 控制項可讓您利用快取後置替換,為每個使用者以及在每次網頁重新整理時動態建立廣告。
有三種方法可用來實作快取後置替換:
使用 Substitution 控制項以宣告方式實作。
使用 Substitution 控制項 API 以程式設計方式實作。
使用 AdRotator 控制項以隱含方式實作。
替代控制項
ASP.NET Substitution 控制項會指定非被快取而是以動態方式建立的快取網頁區段,您可以將 Substitution 控制項放在希望動態內容顯示之處的網頁位置。
在執行階段,Substitution 控制項會呼叫使用 MethodName 屬性所指定的方法,該方法必須傳回字串 (String),然後該字串會取代 Substitution 控制項的內容。在包含的 Page 或 UserControl 控制項上,該方法必須是靜態方法。
使用替代控制項會導致用戶端快取性變更為伺服器快取性,如此一來,網頁便不會在用戶端被快取。這可確保未來要求網頁時,會再次呼叫該方法以產生動態內容。
替代 API
若要以程式設計方式建立快取網頁的動態內容,可以在網頁程式碼中呼叫 WriteSubstitution 方法,將方法的名稱當做參數傳遞給它。處理動態內容之建立的方法會使用單一 HttpContext 參數,並傳回字串,該傳回字串是將在指定之位置被替代的內容。呼叫 WriteSubstitution 方法而不以宣告方式使用 Substitution 控制項的優點,在於您可以呼叫任何任意物件的方法,而不用呼叫 Page 或 UserControl 物件的靜態方法。
呼叫 WriteSubstitution 方法會導致用戶端快取性變更為伺服器快取性,以便不會在用戶端快取網頁。這可確保未來要求網頁時,會再次呼叫該方法以產生動態內容。
AdRotator 控制項
AdRotator 伺服器控制項會在內部實作快取後置替換的支援。如果您將 AdRotator 控制項放在網頁上,它會針對每個要求呈現唯一的廣告,不論是否已快取父代網頁。因此,包含 AdRotator 控制項的網頁只會在伺服器端快取。