asp.net輸出快取的使用
在asp.net仲使用output cache 非常簡單。只需在頁面或者自定義控制元件上宣告,即可以控制頁面或者控制元件的快取策略。
例如:
這樣就宣告瞭一個頁面的快取策略。快取的存續時間為10秒,任何通過GET或者POST方式傳遞到頁面的引數都會使頁面的輸出快取失效。
頁面outputcache指令的具體引數在MSDN上有詳細說明,在此就不贅述了。
使用輸出快取應注意以下:
asp.net頁面在快取生成以後,失效之前,所有對該頁面的請求,直接從記憶體中取出並送顯,將不會經歷asp.net的頁面生命週期。也就是說在頁面宣告週期內的各種事件內的程式碼,將不會被執行。
往往頁面不能夠整體被快取,有些部門需要及時更新,這就需要部分頁快取或者快取後替換。
部分頁快取
為自定義控制元件宣告快取,頁面中呼叫該控制元件,控制元件將會快取,其餘部分不被快取。
被快取後的控制元件一樣不經歷生命週期,將不能和頁面互動。
快取後替換
MSDN給出三種快取後替換方案:
1. Substitution控制元件實現快取後替換
C#程式碼:
{
return "" + DateTime.Now + "";
}
注意:(1)substitution控制元件的MethodName屬性所指定的方法必須為靜態方法並具有HttpContext型別引數。
(2)在上例中的GetDate方法中,因為沒有經歷頁面的生命週期,在方法體內Request、Session、Cookies等等頁面屬性都是不可用的。
2.Response.WriteSubstitution 方法
GetDate方法同上。
3. AdRotator控制元件
Adrotator伺服器控制元件在內部實現對快取後替換的支援
另外在使用時我發現一種比較另類的快取後替換,比較適合於懶人。那就是用iframe,在iframe記憶體放動態更新的內容。
如果頁面大面積需要快取,而只有一小塊不能快取,而且這一塊的動態更新需要依賴Page屬性(比如Session)或者控制元件的值,可以考慮iframe。
最後,在使用中發現這樣一個問題。asp.net會快取兩個版本:一個是首次開啟時被快取的版本,一個頁面建立快取之後第一次postback的版本。
也就是說在頁面被快取之後,第一次postback會執行頁面的生命週期。以後的請求,如果是首次請求則送顯首次開啟的快取版本,如果是postback則送顯第一次postback時的快取版本。不清楚為什麼會是這樣?為什麼頁面被快取之後,第一次postback還會起作用?還請各位大俠點撥。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-659733/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASP.NET 2.0中的頁面輸出快取ASP.NET快取
- PHP 輸出快取PHP快取
- 系統快取全解析2:頁面輸出快取快取
- 關於GD和OB快取的輸出快取
- 在asp.net web api中利用過濾器設定輸出快取ASP.NETWebAPI過濾器快取
- 高速輸出-我們戲說快取快取
- ASP.NET使用Redis共享快取示例ASP.NETRedis快取
- ASP.NET Core 中的快取ASP.NET快取
- ASP.NET快取的方法分析ASP.NET快取
- Asp.Net MVC 快取ASP.NETMVC快取
- ASP.NET 2.0快取ASP.NET快取
- ASP.Net快取總結ASP.NET快取
- ASP.NET的快取依賴機制-SQL快取依賴篇ASP.NET快取SQL
- ASP.NET Core - 快取之分散式快取ASP.NET快取分散式
- .NET Petshop詳解(五):petshop輸出快取設定 (轉)快取
- ASP.NET清除頁面快取ASP.NET快取
- ASP.NET Core 使用 Redis 和 Protobuf 進行 Session 快取ASP.NETRedisSession快取
- ASP.NET Core - 快取之記憶體快取(上)ASP.NET快取記憶體
- ASP.NET Core - 快取之記憶體快取(下)ASP.NET快取記憶體
- 【張逸】ASP.NET:效能與快取ASP.NET快取
- Mybatis的二級快取、使用Redis做二級快取MyBatis快取Redis
- Redis 入門與 ASP.NET Core 快取RedisASP.NET快取
- 【張逸】ASP.NET:效能與快取[續]ASP.NET快取
- ASP.NET快取:方法和最佳實踐ASP.NET快取
- 都在使用的快取,騰訊大牛告訴你他們是如何使用快取的快取
- hibernate的查詢快取和二級快取的配合使用快取
- ASP.NET Web API實現快取的2種方式ASP.NETWebAPI快取
- nginx快取使用詳解,nginx快取使用及配置步驟Nginx快取
- 如何使用 Redis 快取Redis快取
- EhCache快取使用教程快取
- Laravel使用Redis快取LaravelRedis快取
- jetcache快取使用快取
- 從使用者輸入URL開始會經歷哪些快取快取
- C# ASP.NET系統快取全解析C#ASP.NET快取
- ASP.NET快取:方法和最佳實踐 (轉)ASP.NET快取
- 【實戰】使用asyncio爬取gitbook內容輸出pdfGit
- 探討下如何更好的使用快取 —— Redis快取的特殊用法以及與本地快取一起構建多級快取的實現快取Redis
- 淺析ASP.NET頁面快取的幾點體會ASP.NET快取