C#中禁止cache的方法!
+展開
-C#Response.Buffer = true;
Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";服務端緩衝有System.Web.Caching.cahe和memcached
當然System.Web.Caching.cahe是微軟寫的類,而memcached是第三方外掛程式。System.Web.Caching.cache目前還不是分布式緩衝,只能在一台電腦上(07時候),而
memcached是分布式的快取。
伺服器緩衝可分為三種緩衝
1.輸出緩衝:
要實現網頁輸出快取,只要將一條 OutputCache 指令添加到頁面即可。
<%@ OutputCache Duration="60" VaryByParam="*" %>
如同其他頁面指令一樣,該指令應該出現在 ASPX 頁面的頂部,即在任何輸出之前。它支援五個屬性(或參數),其中兩個是必需的。
Duration
必需屬性。頁面應該被緩衝的時間,以秒為單位。必須是正整數。
Location
指定應該對輸出進行緩衝的位置。如果要指定該參數,則必須是下列選項之一:Any、Client、Downstream、None、Server 或 ServerAndClient。
VaryByParam
必需屬性。Request 中變數的名稱,這些變數名應該產生單獨的緩衝條目。“none” 表示沒有變動。“*” 可用於為每個不同的變數數組建立新的緩衝條目。變數之間用 “;” 進行分隔。
VaryByHeader
基於指定的標題中的變動改變緩衝條目。
VaryByCustom
允許在 global.asax 中指定自訂變動(例如,“Browser”)。
2.片段快取:
樣本
<%@ OutputCache Duration="60" VaryByParam="*" %> 該樣本將緩衝使用者控制項60秒,並且將針對查詢字串的每個變動、針對此控制項所在的每個頁面建立單獨的緩衝條目。<%@ OutputCache Duration="60" VaryByParam="none"
VaryByControl="CategoryDropDownList" %> 該樣本將緩衝使用者控制項60秒,並且將針對CategoryDropDownList控制項的每個不同的值、針對此控制項所在的每個頁面建立單獨的緩衝條目。<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser"
Shared="true" %>
最後,該樣本將緩衝使用者控制項60秒,並且將針對每個瀏覽器名稱和主要版本建立一個緩衝條目。然後,每個瀏覽器的緩衝條目將由引用此使用者控制項的所有頁面共用(只要所有頁面都用相同的ID引用該控制項即可)。
3.編程用得最多的緩衝:資料緩衝
System.Web.Caching.cahe被httpRuntime.Cache或HttpContext.Current.Cache執行個體化。httpRuntime.Cache,HttpContext.Current.Cache是內建對象就想當與seesion。
HttpContext.Current.Cache與HttpRuntime.Cache區別:
HttpContext.Current.Cache:為當前 HTTP 要求擷取Cache對象。 HttpRuntime.Cache:擷取當前應用程式的Cache。HttpContext.Current.Cache是調用了 HttpRuntime.Cache,且HttpContext.Current.Cache是用在web程式上,而HttpRuntime.Cache是用在任何程式上。System.web命名空間下。
其實HttpContext.Current.Cache是通過 HttpRuntime.Cache來實現的,所以一般執行個體化最好通過HttpRuntime.Cache來執行個體化:
例如:System.Web.Caching.Cache cache = HttpRuntime.Cache
System.Web.Caching.Cache有很多方法,但方法中add中是存緩衝
參數中有緩衝時間,依賴項。
緩衝時間即到當緩衝的東西達到指定時間就讓緩衝失效,而依賴項是當依賴項發生變化就會使緩衝失效。
依賴項有一般依賴項 CacheDependency和資料庫依賴項SqlCacheDependency。
雖然CacheDependency類完成了很重要的功能,但其組成結構卻比較簡單,主要有兩個屬性和一個方法。
— 屬性“HasChanged”:判斷CacheDependency對象是否已更改。
— 屬性“UtcLastModified”:返回上次依賴項的修改日期
— 方法“Dispose”:釋放CacheDependency對象所佔有的資源。因為緩衝類繼承了介面“IDispose”,所以必須實現此方法。
CacheDependency
例如 Cache.Insert(“key”, myXMLFileData, DateTime.Now.AddMinutes(1),,new
System.Web.Caching.CacheDependency(Server.MapPath(“users.xml”)));
users.xml檔案就相當一般依賴項,當xml檔案被改了,則此緩衝失效。
SqlCacheDependency一般是增對資料庫的,這個設定需要在config裡設定,而且還要啟動資料庫的這樣服務。
Cache.Insert 中可設定跟資料庫中那個表關聯,一旦表有變化就會導致cache失效。
可到網上查詢如何使用
類別:Asp.Net/C#/WCF 作者:轉載 日期:2009-07-06 【評論:0 閱讀:
182】 繁體中文
public string GetNBBarData()
{
string strContent = "";
if (HttpContext.Current.Cache["NBBar"] != null)
{
strContent = (string)HttpContext.Current.Cache["NBBar"];
}
else
{
string StrUrl = "http://www.126.com";
System.Net.WebClient wc = new System.Net.WebClient();
byte[] buffer = wc.DownloadData(new Uri(StrUrl));
strContent = Encoding.UTF8.GetString(buffer); // 擷取網頁內容
HttpContext.Current.Cache.Insert("NBBar", strContent, null, DateTime.Now.AddMinutes(5), TimeSpan.Zero);
}
return strContent;
}