欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
ASP.Net緩存總結及分析

提高性能最好最快的辦法當然是通過(guò)緩存來(lái)改善,對于任何一個(gè)web開(kāi)發(fā)者都應該善用緩存。Asp.net下的緩存機制十分強大,用好緩存機制可以讓我們極大的改善web應用的性能,下面是一些總結的緩存的知識點(diǎn),與大家分享交流:

1.頁(yè)面緩存 

       要實(shí)現頁(yè)面輸出緩存,只要將一條 OutputCache 指令添加到頁(yè)面即可?! ?/p>

        <%@ OutputCache CacheProfile=" " NoStore="True | False" Duration="#ofseconds" Shared="True | False" Location="Any | Client | Downstream | Server | None | ServerandClient " SqlDependency="database/table name pair | CommandNotification " VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" %>  

             CacheProfile

             用于定義與該頁(yè)關(guān)聯(lián)的緩存設置的名稱(chēng)。是可選屬性,默認值為空字符("")。需要注意的是,包含在用戶(hù)控件中的@ OutputCache指令不支持此屬性。在頁(yè)面中指定此屬性時(shí),屬性值必須與Web.config文件<outputCacheSettings>配置節下的outputCacheProfiles元素中的一個(gè)可用項的名稱(chēng)匹配。如果此名稱(chēng)與配置文件項不匹配,將引發(fā)異常。

             NoStore

             該屬性定義一個(gè)布爾值,用于決定是否阻止敏感信息的二級存儲。需要注意的是,包含在用戶(hù)控件中的@ OutputCache指令不支持此屬性。將此屬性設置為true等效于在請求期間執行代碼“Response.Cache.SetNoStore();”。

            Duration

             用于設置頁(yè)面或者用戶(hù)控件緩存的時(shí)間。單位是秒。通過(guò)設置該屬性,能夠為來(lái)自對象的HTTP響應建立了一個(gè)過(guò)期策略,并將自動(dòng)緩存頁(yè)或用戶(hù)控件輸出。需要注意的是,Duration屬性是必需的,否則將會(huì )引起分析器錯誤。

             Shared

             該屬性定義一個(gè)布爾值,用于確定用戶(hù)控件輸出是否可以由多個(gè)頁(yè)共享。默認值為false。注意,包含在A(yíng)SP.NET頁(yè)中的@ OutputCache指令不支持此屬性。

            Location

             用于指定輸出緩存項的位置。其屬性值是OutputCacheLocation枚舉值,它們是Any、Client、Downstream、None、Server和ServerAndClient。默認值是Any,表示輸出緩存可用于所有請求,包括客戶(hù)端瀏覽器、代理服務(wù)器或處理請求的服務(wù)器上。需要注意的是,包含在用戶(hù)控件中的@ OutputCache指令不支持此屬性。

             SqlDependency

             該屬性標識一組數據庫/表名稱(chēng)對的字符串值,頁(yè)或控件的輸出緩存依賴(lài)于這些名稱(chēng)對。需要注意:SqlCacheDependency類(lèi)監視輸出緩存所依賴(lài)的數據庫中的表,因此,當更新表中的項時(shí),使用基于表的輪詢(xún)將從緩存中移除這些項。當通知(在SQL Server 2005中)與CommandNotification值一起使用時(shí),最終將使用SqlDependency類(lèi)向SQL Server 2005服務(wù)器注冊查詢(xún)通知。另外,SqlDependency屬性的CommandNotification值僅在A(yíng)SP.NET頁(yè)中有效??丶荒軐⒒诒淼妮喸?xún)用于@ OutputCache指令。

             VaryByControl

             該屬性使用一個(gè)分號分隔的字符串列表來(lái)更改用戶(hù)控件的輸出緩存。這些字符串代表在用戶(hù)控件中聲明的ASP.NET服務(wù)器控件的ID屬性值。除非已經(jīng)包含了VaryByParam屬性,否則在@ OutputCache指令中,該屬性是必需的。

             VaryByCustom

             用于自定義輸出緩存要求的任意文本。如果賦予該屬性值是browser,緩存將隨瀏覽器名稱(chēng)和主要版本信息的不同而異。如果輸入了自定義字符串,則必須在應用程序的Global.asax文件中重寫(xiě)HttpApplication.GetVaryByCustomString方法。

            VaryByHeader

             該屬性中包含由分號分隔的HTTP標頭列表,用于使輸出緩存發(fā)生變化。當將該屬性設為多標頭時(shí),對于每個(gè)指定的標頭,輸出緩存都包含一個(gè)請求文檔的不同版本。VaryByHeader屬性在所有HTTP 1.1緩存中啟用緩存項,而不僅限于A(yíng)SP.NET緩存。用戶(hù)控件中的@ OutputCache指令不支持此屬性。

             VaryByParam

             該屬性定義了一個(gè)分號分隔的字符串列表,用于使輸出緩存發(fā)生變化。默認情況下,這些字符串與用GET方法屬性發(fā)送的查詢(xún)字符串值對應,或與用POST方法發(fā)送的參數對應。當將該屬性設置為多參數時(shí),對于每個(gè)指定的參數,輸出緩存都包含一個(gè)請求文檔的不同版本??赡艿闹蛋ā皀one”、“*”和任何有效的查詢(xún)字符串或POST參數名稱(chēng)。值得注意的是,在輸出緩存ASP.NET頁(yè)時(shí),該屬性是必需的。它對于用戶(hù)控件也是必需的,除非已經(jīng)在用戶(hù)控件的@ OutputCache指令中包含了VaryByControl屬性。如果沒(méi)有包含,則會(huì )發(fā)生分析器錯誤。如果不需要使緩存內容隨任何指定參數發(fā)生變化,則可將該值設為“none”。如果要使輸出緩存根據所有參數值發(fā)生變化,則將屬性設置為“*”。
     
       創(chuàng )建頁(yè)面輸出緩存文件依賴(lài)

       示例代碼:Response.AddFileDependency(MapPath("test.xml"));
       如需要建立依賴(lài)多文件關(guān)系,則使用AddFileDependencies()方法。
      
       使用編程方式設置頁(yè)面緩存過(guò)期
      
       示例代碼:HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("~/test.       此方法只接受一個(gè)"虛擬絕對"路徑,因此需用Page.ResolveUrl()方法轉換
      
       使用編程方式設置多個(gè)頁(yè)面緩存過(guò)期(創(chuàng )建鍵依賴(lài)(key dependency))
      
       示例代碼:
       緩存頁(yè)面:PageLoad:
        Cache.Insert(“key”,DateTime.Now);
        Response.AddCacheItemDependency("key");
       通過(guò)此法向多個(gè)頁(yè)面添加依賴(lài)項
       移除依賴(lài)項:PageLoad:
       Cache.Remove("key");

       以編程方式操作頁(yè)面輸出緩存

       操作由Response.Cache屬性暴露的HttpCachePolicy類(lèi)對象的方法。

       創(chuàng )建頁(yè)面輸出緩存配置

    <system.web>
          <caching>
                <outputCacheSettings>
                    <outputCacheProfiles>
                            <add name="CacheProfile1" duration="60" />
                    </outputCacheProfiles>
                </outputCacheSettings>
          </caching>
       </system.web>

2.部分頁(yè)面緩存

       緩存后替換
      
       采用聲明方式,使用Substitution控件,設置MethodName屬性所需的方法,此方法必須是靜態(tài)方法,因為當前頁(yè)輸出緩存時(shí),頁(yè)面實(shí)例還沒(méi)被創(chuàng )建。注:AdRotator內部使用了緩存后替代。
      
       以編程方式設置緩存后替換,使用Response.WriteSubstitution()方法,好處:1,此方法引用的方法不一定是當前類(lèi)的方法,可以是另一個(gè)類(lèi)的實(shí)力或靜態(tài)方法。2,可以在自定義控件中使用此方法實(shí)現緩存后替換。
      
       部分頁(yè)面緩存:用戶(hù)控件緩存
      
       給用戶(hù)控件添加<%@ OutputCache%>指令。此指令包含一個(gè)Shared屬性,可設置共享用戶(hù)控件的輸出緩存。

       以編程方式設置用戶(hù)控件緩存

       當用戶(hù)控件中包括<%@ OutputCache%>指令時(shí),可以通過(guò)用戶(hù)控件的CachePolicy屬性所暴露的ControlCachePolicy類(lèi)的實(shí)例的屬性控制修改空間如何緩存。

       創(chuàng )建用戶(hù)控件緩存的文件依賴(lài)

       可以使用CacheControlPolicy.Dependency屬性在一個(gè)緩存了的用戶(hù)控件和文件系統中一個(gè)文件間創(chuàng )建一個(gè)依賴(lài),示例代碼:
       PageLoad:
       CacheDependency depend=new CacheDependency(MapPath("~/test.xml"));
       this.CachePolicy.Dependency=depend;
      
       緩存動(dòng)態(tài)載入的用戶(hù)控件

       可以使用Page.LoadControl()方法載入用戶(hù)控件,當具有緩存特性的用戶(hù)控件被載入時(shí),Asp.net Framework自動(dòng)一個(gè)PartialCachingControl類(lèi)的實(shí)例包裝用戶(hù)控件。示例代碼:
       PageLoad:
       PartialCachingControl cacheme=(PartialCachingControl)Page.LoadControl("test.ascx");
       Cacheme.CachePolicy.SetExpires(DateTime.Now.AddSeconds(10));
       PlaceHolder1.Controls.Add(cacheme);
       Lable1.Text=cacheme.CachePolicy.Duration.ToString();

3.使用DataSource緩存

       SqlDataSource、ObjectDataSource、XmlDataSource控件都包括了用于緩存DataSource承載的屬性,好處是數據源控件可以在數據更新時(shí)自動(dòng)重新載入數據。并且可以在多個(gè)頁(yè)面間共享相同的數據,通過(guò)一些屬性的組合來(lái)識別:SelectCommand、SelectParameters、ConnectionString。如果屬性相同,即共享相同的緩存數據。

       通過(guò)設置屬性設置緩存過(guò)期策略

       包括絕對緩存(EnableCaching="True" CacheDuration=“xxx”)和Sliding緩存(EnableCaching="True" CacheExpirationPolicy="Sliding" CacheDuration=“xxx”)
      
       使用ObjectDataSource控件緩存
      
       通過(guò)設置控件的EnableCaching、CacheExpirationPolicy、CacheDuration屬性以及SelectMethod所制定的方法名來(lái)完成。

       使用XmlDataSource控件緩存

       設置DataFile屬性創(chuàng )建一個(gè)文件依賴(lài)。

       創(chuàng )建數據源控件鍵值依賴(lài)
      
       操作步驟
       1、設置數據源控件的CacheKeyDependency屬性(key);
       2、在Global.asax創(chuàng )建初始化的(key)緩存項目。代碼如下:
       Void Application_Start(Object Sender,EventArgs e)
        {
             HttpContext context=HttpContext.Current;
             context.Cache.Insert(
             "key",DateTime.Now,null,DateTime.MaxValue,Cache.NoSlidingExpiration,CacheItemPriority.NotRemovable,null
            );
        }
       3、在用于更改數據的頁(yè)面上移除緩存項目(key);
       如在DetailsView控件的ItemInserted事件中重新插入緩存項目,此時(shí)每個(gè)依賴(lài)于這個(gè)鍵值(key)的DataSource會(huì )自動(dòng)重新載入數據,代碼如下:
       protected void DetailsView_ItemInserted(object sender,DetailsViewInsertedEventArgs e)
       {
           Cache.Insert("key",Datetime.Now);
        }
       注:以上key值采用當前時(shí)間并非必須。

4.Cache對象

       幾乎可以給緩存添加任何對象,例如,可以添加自定義控件,DataSet,DataTable,ArrayList和List到緩存。注意:使用從緩存中返回的任何項目,應該總是要檢查項目是否為空,如果一個(gè)項目已經(jīng)被刪除了,則當將來(lái)試圖從緩存中讀取時(shí),就會(huì )返回null。
       詳細信息查看msdnCache 成員
       添加數據緩存到Cache對象示例代碼:
        void Page_Load()
        {
             DataTable dt=(DataTable)Cache["dtkey"];
              if(dt==null)
                {
                      dt=getdtFromDB();   //此處調用方法從
數據庫中返回數據項DataTable
                      Cache.Insert("dtKey",dt,null,DateTime.Now.AddHours(1),Cache.NoSlidingExpiration);   //此處使用絕對過(guò)期策略添加項目
                 }
                GridView1.DataSource=dt;
                GridView1.DataBind();
        }
         private DataTable getdtFromDB()
       {
          //略......
        }

       使用依賴(lài)添加項目

       Asp.net Framework包括三種緩存依賴(lài)
       1、CacheDependency——用于創(chuàng )建一個(gè)文件依賴(lài)或緩存鍵值依賴(lài)。
       2、SqlCacheDependency——用于創(chuàng )建一個(gè)對于Microsoft SQL Server數據庫表或SQL Server 2005數據庫查詢(xún)的依賴(lài)。
       3、AggregateCacheDependency——用于使用多個(gè)CacheDependency對象創(chuàng )建依賴(lài),例如,可以用該對象組合文件和Sql依賴(lài)。

       CacheDependency類(lèi)是基類(lèi),其他兩個(gè)類(lèi)都是從該類(lèi)繼承。

       指定緩存項目?jì)?yōu)先級
      
       可以指定CacheItemPriority枚舉類(lèi)型任意值。

       配置緩存
       
       詳細信息查看Msdn Caching元素

5.使用SQL緩存依賴(lài)

       Asp.net Framework支持兩種類(lèi)型的SQL緩存依賴(lài):拉和推。第一種模式使用表輪詢(xún)的 ASP.NET 實(shí)現,第二種模式使用 SQL Server 2005 的查詢(xún)通知功能??梢詫θ魏巫罱姹镜腗s SQL Server,包括Ms SQL server 2005 Express、Ms SQL Server 2000 和 Ms SQL Server 7.0,使用拉SQL緩存依賴(lài)。第二種類(lèi)型推緩存依賴(lài)則只能用于Ms SQL Server 2005和Ms SQL server 2005 Express,因為他們依賴(lài)SQL Server的Service Broker。
      
       使用拉SQL緩存依賴(lài)

        實(shí)質(zhì)上拉SQL緩存依賴(lài)使用數據庫tigger,當表被修改時(shí),tigger被觸發(fā),名為AspNet_SqlCacheTablesForChangeNotification的數據表的一行數據被更新,來(lái)記錄修改情況,Asp.net Framework使用一個(gè)后臺線(xiàn)程,來(lái)定期拉數據表的修改信息。如果有修改,則依賴(lài)于數據表的緩存項目被移除。
       配置拉SQL緩存依賴(lài):
       1、必須對一個(gè)或多個(gè)數據庫表啟用SQL緩存依賴(lài)。
            
             可以使用框架中的SqlCacheDependencyAdmin類(lèi)來(lái)配置SQL數據庫支持拉SQL緩存依賴(lài),由于調用該類(lèi)的方法需要創(chuàng )建表、存儲過(guò)程、trigger,出于安全考慮,Asp.net進(jìn)程并不應該被賦予這些權限,而是通過(guò)一個(gè)命令行工具來(lái)使用此類(lèi)。
             aspnet_regsql 詳細信息訪(fǎng)問(wèn)Msdn ASP.NET SQL Server 注冊工具 (Aspnet_regsql.exe)

             簡(jiǎn)要步驟: 1、啟用特定數據庫的SQL緩存依賴(lài)。
             aspnet_regsql -c "Data Source=localhost;integrated Security=True;Initial Catalog=Pubs" -ed
                                2、啟用特定表的SQL緩存依賴(lài)。
             aspnet_regsql -c "Data Source=localhost;integrated Security=True;Initial Catalog=Pubs" -ed -t Titles

       2、必須在Web配置文件中配置SQL緩存依賴(lài)。
             <!-- caching section group -->
                <caching>
                <sqlCacheDependency enabled = "true" pollTime = "1000" >   //通過(guò)pollTime 的設置,定時(shí)拉數據庫的修改
                    <databases>
                      <add name="Northwind"
                         connectionStringName="NorthwindConnectionString1"
                       pollTime = "1000"
                      />
                    </databases>
                </sqlCacheDependency>
                </caching>

      a、 對頁(yè)面輸出緩存使用拉SQL緩存依賴(lài):<%@ OutputCache%>指令指定sqlDependency屬性值:庫名和表名(Mydatabase:Mytable);
      
       b、對DataSource控件使用拉SQL緩存依賴(lài):為DataSource控件sqlDependency屬性指定值:庫名和表名(Mydatabase:Mytable);

       c、對Cache對象使用拉SQL緩存依賴(lài):
      
       void Page_Load()
        {
             DataTable dt=(DataTable)Cache["dtkey"];
              if(dt==null)
                {
                      dt=getdtFromDB();   //此處調用方法從數據庫中返回數據項DataTable
                      SqlCacheDependency sqlDepend=new SqlCacheDependecy("Mydatabase","Mytable");
                      Cache.Insert("dtKey",dt,sqlDepend);
                 }
                GridView1.DataSource=dt;
                GridView1.DataBind();
        }
         private DataTable getdtFromDB()
       {
          //略......
        }
      
       使用推SQL緩存依賴(lài)

       通過(guò)Service Broker可以在數據庫中的數據變更時(shí)自動(dòng)給應用程序發(fā)送一個(gè)消息。
       好處:Asp.net應用程序不必定時(shí)拉數據庫的修改。
       缺點(diǎn):查詢(xún)類(lèi)型有諸多限制(如必須使用兩部分的表明:abo.mytabel,查詢(xún)必須包含一個(gè)顯示的列名表明:不能使用*,不能引用視圖、臨時(shí)表等,不能包含子查詢(xún)、外連接、子連接,不能引用大對象、不能使用DISTINCT、COMPUTE、COMPUTE BY、INSERT關(guān)鍵字、不能包含許多聚合函數 等等)

       1.為推SQL緩存依賴(lài)配置數據庫
       啟用Ms SQL Server 2005 Service Broker:
       a、可以通過(guò):Select name ,is_broker_enabled from sys_databases,查詢(xún)是否對特定的數據庫激活。
       b、通過(guò):Alter Database MyBase Set ENABLE_BROKER,啟用。
       c、為本地AspNet賬號賦予需要的權限,如:Grant Subscribe Query Notifications To “yourserver\Aspnet”
     
      也就是說(shuō)sql緩存暫時(shí)只支持ms sql server 2005或以上,他們才有依賴(lài)通知。否則緩存無(wú)效。

       2.為推SQL緩存依賴(lài)配置應用程序
       void Application_Start(object sender, EventArgs e)
       {
             string conString=WebConfigurationManager.ConnectionStrings["MyContention1"].ConnectionString;
             SqlDependency.Start(conString);
             HttpContext context=HttpContext.Current;
             context.Cache.Insert(
             "key",DateTime.Now,null,DateTime.MaxValue,Cache.NoSlidingExpiration,CacheItemPriority.NotRemovable,null
            );
        }

      a、對頁(yè)面輸出緩存使用推SQL緩存依賴(lài):
       當緩存整個(gè)Asp.net頁(yè)面時(shí),可以使用推Sql緩存依賴(lài)。如果包含在頁(yè)面上的任何Sql命令的結果有變動(dòng),頁(yè)面就會(huì )自動(dòng)從緩存中過(guò)期。
       SqlCommand對象包含一個(gè)NotificationAutoEnlist屬性,該屬性默認值為true。當NotificationAutoEnlist啟用時(shí),頁(yè)面和命令間自動(dòng)創(chuàng )建一個(gè)推緩存依賴(lài)。注意SqlDataSource的SelectCommand必須符合查詢(xún)要求。
     
      
    b、對DataSource控件使用推SQL緩存依賴(lài):
       只需要設置SqlcacheDependency屬性即可。設置SqlCacheDependency=“CommandNotification”
      
    c、對Cache對象使用推SQL緩存依賴(lài):
       void Page_Load()
        {
             DataTable dt=(DataTable)Cache["dtkey"];
              if(dt==null)
                {
                      string conString=WebConfigurationManager.ConnectionStrings["MyContention1"].ConnectionString;
                      SqlDatadapter dad=new SqlDataAdapter("Select a,b From dbo.Mytable",conString); //注意查詢(xún)符合要求
                      SqlCacheDependency sqlDepend=new SqlCacheDependecy(dad.SelectCommand);
                      dt=new DataTable();
                      dad.Fill(dt);
                      Cache.Insert("dtKey",dt,sqlDepend);
                 }
                GridView1.DataSource=dt;
                GridView1.DataBind();
        }
       注意,SqlCacheDependency類(lèi)的示例被創(chuàng )建了。一個(gè)SqlCommand對象被傳遞給SqlCacheDependency類(lèi)的構造函數。如果SqlCommand的結果變化了,則這個(gè)DataTable會(huì )自動(dòng)從緩存中失效。這些命令的順序很重要。必須在執行該命令之前創(chuàng )建SqlCacheDependency對象。如果在創(chuàng )建SqlCacheDependency對象之前調用Fill()方法,則依賴(lài)會(huì )被忽略。

作者:nnsword
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP.NET2.0_緩存
asp.net網(wǎng)頁(yè)緩存配置
OutputCache屬性詳解(四)— SqlDependency
ASP.NET緩存使用詳解_控件資料
.NET中的緩存知識總結
.net代碼優(yōu)化
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久