首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 快取機制全解析:頁面輸出快取、部分頁面快取、SqlCacheDependency 與程式化快取控制

     編輯:關於ASP.NET

ASP.NET 2.0 提供多層次快取架構:從整頁輸出快取、區塊快取、資料源快取,到分散式快取與 SQL 相依性快取。本文系統整理各層快取技術、設定參數、進階應用與程式化控制 API。

1. 頁面輸出快取

快取完整頁面輸出至記憶體,後續請求直接回應,跳過頁面生命週期。

  • 位置:Location="Any|Client|Downstream|Server|None|ServerAndClient",預設 Any。
  • 自定義變化:VaryByCustom + Global.asax GetVaryByCustomString() 實作角色/語言/裝置差異快取。
  • 檔案相依性:Response.AddFileDependency(path),檔案變更自動失效快取。
  • 程式化移除:HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("~/path.aspx"))。
  • 鍵相依性:Cache.Insert("Key", DateTime.Now); Response.AddCacheItemDependency("Key"); 另一頁面 Cache.Remove("Key") 觸發連動失效。

2. 部分頁面快取 (Fragment Caching)

針對 用戶控件 獨立設定 @OutputCache,不同區塊套用不同策略。父頁面不快取,子控件快取。

  • Shared="true":同一用戶控件在多頁面間共享快取實例。
  • VaryByControl:依控件屬性值變化快取(如下拉選單選擇)。

3. 資料源控件快取

<asp:SqlDataSource EnableCaching="true" CacheDuration="60"
  CacheExpirationPolicy="Sliding|Absolute"
  SqlCacheDependency="Northwind:Products" />
  • CacheDuration:秒數。
  • CacheExpirationPolicy:Sliding (滑動) / Absolute (絕對)。
  • SqlCacheDependency:資料表異動自動失效(輪詢或 SQL 2005 查詢通知)。

4. 物件快取

Cache["Key"] = value; / Cache.Insert(key, value, dependencies, absoluteExpiration, slidingExpiration, priority, onRemoveCallback)。

  • 相依性:CacheDependency (檔案/鍵/聚合)、SqlCacheDependency。
  • 回調:CacheItemRemovedCallback 實作快取失效後續處理(重新載入、日誌、通知)。

5. 快取最佳實踐原則

原則說明
快取「昂貴」資料複雜查詢、外部 API 呼叫、大量運算結果
設定合理逾時平衡資料新鮮度與效能增益
使用相依性而非固定逾時資料變更即時失效,避免髒讀
監控快取命中率Performance Counter: ASP.NET Applications \ Cache Hit Ratio
避免快取大型物件圖序列化/反序列化開銷、記憶體碎片

ASP.NET 2.0 的快取架構靈活強大,關鍵在於根據資料特性選擇正確層級與策略,並善用相依性機制確保資料一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved