Asp.net 緩衝技術

來源:互聯網
上載者:User

     用了緩衝,其實就是由原來的:響應->執行->送顯,變成: 響應->送顯。中間的“執行”就省掉了,提高了效率。一般有四種類型的緩衝技術。
    
     一.Output Caching
     由於IIS的一些特性,預設情況下Output Cache是開啟的,但是要對某些請求進行緩衝,還需要開發人員進行定製,而且預設情況下,Output Cache 會被緩衝到硬碟上,我們可以通過修改DiskCacheable的屬性來設定其是否緩衝,還可以通過Web config裡配置快取檔案的大小。

<%@ OutputCache Duration="3600" VaryByParam="state"  DiskCacheable="true" %>

一般用硬碟緩衝是考慮到頁面送顯的資料比較大,相對記憶體緩衝來說,它的容量大,但是訪問速度慢點,如果把周期設太短,使用硬碟緩衝的效率就不大好。對於Output Cache的定製,有兩種方法,一種是基於底層的API技術,一種是基於高層的@OutputCaching:

      1.基於高層的@OutputCaching

      A.由參數改變緩衝內容:有些時候我們需要根據使用者的請求來產生頁面,但是使用者的請求只有有限的幾種組合,這個時候就可以根據使用者請求來產生幾種快取頁面面,來進行緩衝。

<%@ OutputCache Duration = "60" VaryByParam = "state" %>            <asp:SqlDataSource ID="SqlDataSource1" runat="server">
                <SelectParameters>
                    <asp:QueryStringParameter Name="state" QueryStringField="state" DefaultValue="CA" />
                </SelectParameters>
            </asp:SqlDataSource>

      B.回調緩衝:可以針對每個請求在頁面中插入動態部分,以彌補單獨使用靜態緩衝的不足:
動態部分用Substitution控制項,Substitution控制項是一個容器

 <asp:Substitution ID="Substitution1" runat="server" MethodName ="" />

MethodName 裡面放入要調用的方法內容。
       2. 使用API定製緩衝:
  通過設定System.Web.HttpCachePolicy屬性來進行配置

<%@ OutputCache Duration="60" VaryByParam="none"  %>

就可以寫成      

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
        Response.Cache.SetCacheability(HttpCacheability.Public);

     二.Fragment Caching
     作為Output的緩衝的附加功能,還提供一種緩衝技術,專門用於緩衝使用者控制項。在使用者控制項中設定:

<%@ OutputCache Duration="60" VaryByParam="none"  %>

但在引用使用者控制項的頁面不設定緩衝。這樣的話,頁面中除了使用者控制項是靜態,其他都是動態。
緩衝使用者空間同樣還可以使用控制項作為參數來源。通過指定控制項作為緩衝控制項的資料來源,可以達到緩衝控制項資料的目的,和上面一樣。

     三.Data Caching
     Asp.net提供了一種非常快捷的方法進行資料庫緩衝,使用者可以非常簡單方便的對頁面變數進行緩衝。並以此提高程式效率。一個頁面變數的緩衝生命週期與應用程式的緩衝生命週期相同
實現是把資料放在Cache中,如:

        source = new DataView(ds);
        Cache("MyCache") = source;

MyCache這個變數其實就是一個XML檔案。

     四.SQL Caching
     通過設定資料庫串連池,只有當資料庫資料被改變的時候,緩衝才會改變。
     開個DOS視窗:
              C:\>dir aspnet_regsql.exe/s ——這個檔案是專門註冊SQL串連池的,它對SQL Sever 7.0以上都有專門的支援,我們通過寫一些專門的語句來配置這個註冊串連池,可以把串連池和本地的應用程式(Asp.net伺服器,即IIS)做一個串連。串連池只能監視有限的幾個庫,不然串連池的負載太大。使用SQL Caching:
      先註冊,如: aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-ed
                                aspnet_regsql.exe-S".\SQLExpress"-E-d"pubs"-et-t"authors"
       其中:- S".\SQLExpress" 表示要使用的SQL Server執行個體為".\SQLExpress"。-E 表示使用當前windows憑證進行身分識別驗證。-d"pubs" 表示用於應用程式服務的資料庫名稱叫"pubs"。-ed表示為SQL 緩衝依賴項啟用資料庫。-et 表示為SQL 緩衝依賴項啟用表。-t"authors"表的名稱為"authors"。
       然後頁面上:<%@ OutputCache Duration="99999999" VaryByParam="none" SqlDependency="Pubs.Authors"  %>

就OK了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.