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

ASP.NET 2.0 資料教程 58:ObjectDataSource 快取完整指南-時間基礎/相依性基礎、CacheDuration、CacheExpirationPolicy、SqlCacheDependency、啟用條件與最佳實務

     編輯:關於ASP.NET

前言

ObjectDataSource 內建快取支援,透過屬性設定即可啟用,無需寫代碼。本文詳細說明時間基礎與相依性基礎兩大策略、關鍵屬性、啟用條件與最佳實務。

快取兩大核心策略

策略機制適用情境
Time-based (時間基礎)固定/滑動過期時間資料異動可接受延遲、查詢成本高
Dependency-based (相依性基礎)檔案/快取項目/SQL Cache Dependency 異動觸發失效需資料即時一致性、資料庫支援通知/輪詢

ObjectDataSource 關鍵快取屬性

  • EnableCaching="true":啟用快取。
  • CacheDuration="60":快取秒數 (0 表示永不過期)。
  • CacheExpirationPolicy="Absolute|Sliding":絕對/滑動過期。
  • SqlCacheDependency="Northwind:Products":SQL Cache Dependency 字串 (格式:連接字串名稱:資料表名稱)。

啟用必要條件

  1. SelectMethod 回傳型別必須可序列化 (DataSet, DataTable, List, 自訂類別標記 [Serializable])。
  2. DataSourceMode="DataSet" (預設) 或 DataReader (需可序列化包裝)。
  3. 分頁/排序參數需一致,否則產生多份快取副本。

程式碼等效邏輯

// ObjectDataSource 內部簡化邏輯
object cached = HttpRuntime.Cache[cacheKey];
if (cached != null) return cached;

object data = SelectMethod();
HttpRuntime.Cache.Insert(cacheKey, data, dependency, 
    absoluteExpiration, slidingExpiration);
return data;

最佳實務建議

  • 靜態資料:CacheDuration="0" (無絕對過期) + SqlCacheDependency 或啟動載入。
  • 半動態資料:CacheDuration="300" (5 分鐘) + SlidingExpiration。
  • 高頻異動資料:勿啟用 ObjectDataSource 快取,改用 SQL Cache Dependency 或無快取。
  • 快取鍵衝突:不同參數組合產生不同快取項目,注意記憶體用量。

結語

ObjectDataSource 快取屬性提供零代碼快取能力,但策略耦合於表現層。理解時間/相依性策略差異、啟用條件與序列化需求,能避免常見誤用 (如高頻異動資料仍設長過期)。

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