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

HttpRuntime.Cache vs HttpContext.Current.Cache:本質相同但用法有別

     編輯:關於ASP.NET

核心結論:同一個對象實例

通過反編譯驗證:

// HttpContext.Cache 屬性實現
public Cache Cache { get { return HttpRuntime.Cache; } }

兩者返回的都是 HttpRuntime.Cache 靜態實例,應用程序域級單例。

為什麼仍建議使用 HttpRuntime.Cache?

場景HttpContext.Current.CacheHttpRuntime.Cache
ASP.NET 請求管道內✅ 可用✅ 可用
非請求上下文(定時任務、後台線程、單元測試)❌ HttpContext.Current 為 null✅ 正常訪問
應用程序啟動階段 (Application_Start)❌ 未初始化✅ 已就緒
類庫/服務層代碼⚠️ 引入 System.Web 依賴✅ 僅需 System.Web 引用

最佳實踐

// 統一封裝緩存助手,屏蔽底層差異
public static class CacheHelper {
    private static readonly Cache _cache = HttpRuntime.Cache;
    
    public static T Get(string key) => (T)_cache[key];
    public static void Set(string key, object value, TimeSpan sliding) 
        => _cache.Insert(key, value, null, Cache.NoAbsoluteExpiration, sliding);
    public static void Remove(string key) => _cache.Remove(key);
}

原則:業務代碼依賴抽象 (CacheHelper),而非具體實現 (HttpRuntime.Cache)。

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