程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# ObjectCache、OutputCache緩存,

C# ObjectCache、OutputCache緩存,

編輯:C#入門知識

C# ObjectCache、OutputCache緩存,


 1 /// <summary>
 2     /// 緩存操作類
 3     /// </summary>
 4     public class Cache
 5     {
 6         private static List<string> _allUseCacheKey = new List<string>();
 7         private static ObjectCache _cache = MemoryCache.Default;
 8 
 9         /// <summary>
10         /// 添加緩存
11         /// </summary>
12         /// <param name="key">Key 唯一</param>
13         /// <param name="value">值</param>
14         /// <param name="cacheOffset">超時時間</param>
15         public static void Add(string key, object value, DateTimeOffset cacheOffset)
16         {
17             if (_allUseCacheKey.Contains(key))
18             {
19                 Remove(key);
20             }
21             _allUseCacheKey.Add(key);
22             _cache.Add(key, value, cacheOffset);
23         }
24 
25         /// <summary>
26         /// 移除緩存
27         /// </summary>
28         /// <param name="key">Key</param>
29         public static void Remove(string key)
30         {
31             if (_allUseCacheKey.Contains(key))
32             {
33                 _allUseCacheKey.Remove(key);
34             }
35             _cache.Remove(key);
36         }
37 
38         /// <summary>
39         /// 讀取緩存
40         /// </summary>
41         /// <param name="key">Key</param>
42         /// <returns></returns>
43         public static object Read(string key)
44         {
45             if (_allUseCacheKey.Contains(key))
46                 return _cache[key];
47             return null;
48         }
49 
50         /// <summary>
51         /// 清除所有緩存
52         /// </summary>
53         public static void Clear()
54         {
55             foreach (string value in _allUseCacheKey)
56             {
57                 _cache.Remove(value);
58             }
59             _allUseCacheKey.Clear();
60         }
61     }
public class SysuserStorageService
{
private int _adminId;

public SysuserStorageService(int adminId)
{
_adminId = adminId;
}

/// <summary>
/// 緩存一些內容
/// </summary>
public void Storage()
{
tbl_admin user = new tbl_admin();//根據實際需求獲取對象
Cache.Add(_adminId + "-Admin-" + SystemSetting.Wms, user, SystemSetting.OffSetTime);
Cache.Add(_adminId + "-LastLoginTime-" + SystemSetting.Wms, DateTime.Now, SystemSetting.OffSetTime);
}

public tbl_admin GetAdmin
{
get { return (tbl_admin)Cache.Read(_adminId + "-Admin-" + SystemSetting.Wms); }
}

public string GetLastLoginTime
{
get { return ((DateTime)Cache.Read(_adminId + "-LastLoginTime-" + SystemSetting.Wms)).ToString("yyyy-MM-dd HH:mm:ss"); }
}
}
 public class SystemSetting
    {
        /// <summary>
        /// 緩存定義
        /// </summary>
        public const string ShopWms = "Wms";

        /// <summary>
        /// 緩存超時時間
        /// </summary>
        public static DateTimeOffset OffSetTime = DateTimeOffset.Now.AddHours(24);

        /// <summary>
        /// 登錄Session
        /// </summary>
        public const string LoginSession = "";
    }

SysuserStorageService storage = new SysuserStorageService(AdminId);//根據ID調用
tbl_admin User = storage.GetAdmin;

 

//頁面緩存

[OutputCache(Duration = 300, VaryByParam = "productno;brand;years")]

上述代碼使用@OutputCatch指令聲明了頁面緩存,該頁面將被緩存300秒。@OutputCatch指令包括10個屬性,通過這些屬性能夠分別為頁面的不同情況進行緩存設置,常用的屬性如下所示:

 

CacheProfile:獲取或設置OutputCacheProfile名稱。

Duration:獲取或設置緩存項需要保留在緩存中的時間。

VaryByHeader:獲取或設置用於改變緩存項的一組都好分隔的HTTP標頭名稱。

Location:獲取或設置一個值,該值確定緩存項的位置,包括Any、Clint、Downstream、None、Server和ServerAndClient。默認值為Any。

VaryByControl:獲取或設置一簇分好分隔的控件標識符,這些標識符包含在當前頁或用戶控件內,用於改變當前的緩存項。

NoStore:獲取或設置一個值,該值確定是否設置了“Http Cache-Control:no-store”指令。

VaryByCustom:獲取輸出緩存用來改變緩存項的自定義字符串列表。

Enabled:獲取或設置一個值,該值指示是否對當前內容啟用了輸出緩存。

VaryByParam:獲取查詢字符串或窗體POST參數的列表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved