1.文件緩存依賴
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Cache cache = HttpContext.Current.Cache; //文件緩存依賴 cache.Insert("CC", "依賴項測試", new CacheDependency(@"D:\123.txt")); //這時候在about.aspx頁面添加一行代碼,當更改一下D:123.txt時,cache["cc"]會立即被清空 } }
public partial class About : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //直接打開本頁面,輸出緩存依賴項測試 //當更改D:\123.txt之后,在刷新,輸出空,表明該Cache是依賴於D:\123.txt的 Response.Write(HttpContext.Current.Cache["CC"]);
2.NoSlidingExpiration 絕對過期時間
注:NoSlidingExpiration 絕對過期時間,當超過設定時間,立即移除。
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Cache cache = HttpContext.Current.Cache; //30秒后就到期,立即移除,沒商量 cache.Insert("DD", "絕對過期測試", null, DateTime.Now.AddSeconds(5), System.Web.Caching.Cache.NoSlidingExpiration); } }
public partial class About : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //先打開index.aspx添加到緩存 然后立即打開本頁面,輸出 絕對過期測試 //持續刷新5秒后,不會再輸出 絕對過期測試 Response.Write(HttpContext.Current.Cache["DD"]); } }
3.NoAbsoluteExpiration 滑動過期時間
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Cache cache = HttpContext.Current.Cache; //彈性過期時間,當緩存沒使用10秒就過期 cache.Insert("DD", "滑動過期測試", null, System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromSeconds(10)); } }
public partial class About : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //直接打開本頁面,輸出彈性過期測試 //如果一直不停地刷新,都會繼續輸出,但是當超過10秒后再刷新,不會再輸出 滑動緩存測試 Response.Write(HttpContext.Current.Cache["DD"]); } }
4.緩存的優先級設置
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Cache cache = HttpContext.Current.Cache; //文件權重級別 cache.Add("MyData", "緩存重要級別", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null); } }
//在服務器釋放系統內存時,具有該優先級級別的緩存項最有可能被從緩存刪除。 Low = 1,//在服務器釋放系統內存時,具有該優先級級別的緩存項比分配了 System.Web.Caching.CacheItemPriority.Normal //優先級的項更有可能被從緩存刪除。 BelowNormal = 2,//在服務器釋放系統內存時,具有該優先級級別的緩存項很有可能被從緩存刪除,其被刪除的可能性僅次於具有 System.Web.Caching.CacheItemPriority.Low Normal = 3,//緩存項優先級的默認值為 System.Web.Caching.CacheItemPriority.Normal。 Default = 3,//在服務器釋放系統內存時,具有該優先級級別的緩存項被刪除的可能性比分配了 System.Web.Caching.CacheItemPriority.Normal //優先級的項要小。 AboveNormal = 4,//在服務器釋放系統內存時,具有該優先級級別的緩存項最不可能被從緩存刪除。 High = 5,//在服務器釋放系統內存時,具有該優先級級別的緩存項將不會被自動從緩存刪除。但是,具有該優先級級別的項會根據項的絕對到期時間或可調整到期時間與其他項一起被移除 NotRemovable = 6,
優先級 |
Low=1 |
BelowNormal=2 |
Normal=3 |
Default=3 |
AboveNormal=4 |
High=5 |
NotRemoveable=6 |
5.當緩存被移除時,通知程序
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Cache cache = HttpRuntime.Cache; //文件權重級別 cache.Add("MyData", "緩沖移除通知", null, DateTime.Now.AddSeconds(10) ,Cache.NoSlidingExpiration,CacheItemPriority.Low, Show); } public void Show(string key, object value, CacheItemRemovedReason reason) { Cache cache = HttpRuntime.Cache; Cache.Insert("MyData", "緩存被清空啦!緩存被清空啦!緩存被清空啦!緩存被清空啦!緩存被清空啦!緩存被清空啦!緩存被清空啦!"); } }
public partial class About : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Write(HttpRuntime.Cache["MyData"]); } }