網頁實現緩衝

來源:互聯網
上載者:User

 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;
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.