BLL.Area bll = new BLL.Area();
protected void Page_Load(object sender, EventArgs e)
{
if (Cache["tList"] != null)
{
Response.Write("已經有數據了!!!" + Cache.Count);
this.Repeater1.DataSource = Cache["tList"];
this.Repeater1.DataBind();
}
else
{
Response.Write("沒有數據,請求服務器得到數據了!!!");
List<Model.Area> list = bll.GetCityList();
this.Repeater1.DataSource = list;
this.Repeater1.DataBind();
//不設置緩存過時時間
//Cache["tList"] = list;
//Cache.Insert("tList",list);
//使用緩存的絕對過時時間
Cache.Insert("tList",list,null,DateTime.Now.AddSeconds(35),System.Web.Caching.Cache.NoSlidingExpiration);
//使用緩存的相對過時時間
Cache.Insert("tList",list,null,DateTime.MaxValue,new TimeSpan(0,0,15));
Response.Write(Cache.Count);
}
}html
1。頁面緩存和控件緩存的區別:
1.1頁面緩存是保存的被請求頁面對象執行後生成的html代碼。
控件緩存是保存的數據源控件上次查詢到的 數據集合(List<Classes> list)瀏覽器
1.2頁面緩存一旦使用,那麼在緩存失效以前,服務器都不會在建立被請求的頁面類對象來執行生成html代碼了,而是直接從緩存裏獲上次生成的HTML代碼
控件緩存一旦使用,那麼無論緩存有沒有失效,服務器都會爲每一個瀏覽器請求建立頁面類對象並執行生成Html代碼。只不過,在運行頁面對象的過程當中,當發現數據源控件已經緩存了上次查詢的結果數據,就再也不調用數據源綁定的方法來得到數據,而是直接從緩存中獲上次查詢的數據。緩存
2.1絕對過時時間:是指定一個確切的時間點,過了,緩存就自動清空。
2.2相對過時時間:是指定一個確切的時間戳(如:15秒),那麼頁面在15秒內被任何一個瀏覽器訪問,緩存失效時間都會更新回15秒並從新倒數計時。一旦15秒內沒有任何訪問,那麼服務器就會清空該緩存。服務器
// 參數:
// key:
// 用於引用該對象的緩存鍵。
//
// value:
// 要插入緩存中的對象。
//
// dependencies:
// 該項的文件依賴項或緩存鍵依賴項。當任何依賴項更改時,該對象即無效,並從緩存中移除。若是沒有依賴項,則此參數包含 null。
//
// absoluteExpiration:
// 所插入對象將到期並被從緩存中移除的時間。要避免可能的本地時間問題(例如從標準時間改成夏時制),請使用 System.DateTime.UtcNow
// 而不是 System.DateTime.Now 做爲此參數值。若是使用絕對到期,則 slidingExpiration 參數必須爲 System.Web.Caching.Cache.NoSlidingExpiration。
//
// slidingExpiration:
// 最後一次訪問所插入對象時與該對象到期時之間的時間間隔。若是該值等效於 20 分鐘,則對象在最後一次被訪問 20 分鐘以後將到期並被從緩存中移除。若是使用可調到期,則
// absoluteExpiration 參數必須爲 System.Web.Caching.Cache.NoAbsoluteExpiration。
//
// priority:
// 該對象相對於緩存中存儲的其餘項的成本,由 System.Web.Caching.CacheItemPriority 枚舉表示。該值由緩存在退出對象時使用;具備較低成本的對象在具備較高成本的對象以前被從緩存移除。
//
// onRemoveCallback:
// 在從緩存中移除對象時將調用的委託(若是提供)。當從緩存中刪除應用程序的對象時,可以使用它來通知應用程序。
//
// 異常:
// System.ArgumentNullException:
// key 或 value 參數爲 null。
//
// System.ArgumentOutOfRangeException:
// 將 slidingExpiration 參數設置爲小於 TimeSpan.Zero 或大於一年的等效值。
//
// System.ArgumentException:
// 爲要添加到 Cache 中的項設置 absoluteExpiration 和 slidingExpiration 參數。
public void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);this
使用例子以下:3d
BLL.Area bll = new BLL.Area();
protected void Page_Load(object sender, EventArgs e)
{
if (Cache["tList"] != null)
{
Response.Write("已經有數據了!!!" + Cache.Count);
this.Repeater1.DataSource = Cache["tList"];
this.Repeater1.DataBind();
}
else
{
Response.Write("沒有數據,請求服務器得到數據了!!!");
List<Model.Area> list = bll.GetCityList();
this.Repeater1.DataSource = list;
this.Repeater1.DataBind();
//不設置緩存過時時間
//Cache["tList"] = list;
//Cache.Insert("tList",list);
//使用緩存的絕對過時時間
//Cache.Insert("tList",list,null,DateTime.Now.AddSeconds(35),System.Web.Caching.Cache.NoSlidingExpiration);
//使用緩存的相對過時時間
//Cache.Insert("tList",list,null,DateTime.MaxValue,new TimeSpan(0,0,15));
CacheDependency cdd=new CacheDependency (Server.MapPath("CacheDependency.txt"));
Cache.Insert("tList", list, cdd, DateTime.MaxValue, new TimeSpan(0, 0, 35), CacheItemPriority.Normal, aa);
Response.Write(Cache.Count);
}
}code
private void aa(string key, object value, CacheItemRemovedReason reason)
{
string msg = "Key: " + key + ",Value: " + value.ToString() + "Reson: " + reason.ToString();
string logPath = Server.MapPath("SelfCache_Log.txt");
System.IO.File.WriteAllText(logPath, msg);
}orm