第13章-Web應(yīng)用性能調(diào)優(yōu)和跟蹤、檢測_第1頁
第13章-Web應(yīng)用性能調(diào)優(yōu)和跟蹤、檢測_第2頁
第13章-Web應(yīng)用性能調(diào)優(yōu)和跟蹤、檢測_第3頁
第13章-Web應(yīng)用性能調(diào)優(yōu)和跟蹤、檢測_第4頁
第13章-Web應(yīng)用性能調(diào)優(yōu)和跟蹤、檢測_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第13章

Web應(yīng)用性能調(diào)優(yōu)和跟蹤檢測內(nèi)容如何開發(fā)高性能的Web應(yīng)用跟蹤檢測緩存技術(shù)在Web應(yīng)用中的異步處理HealthMonitor如何開發(fā)高性能的Web應(yīng)用頁面和效勞器控件處理狀態(tài)管理數(shù)據(jù)訪問Web應(yīng)用程序編碼實(shí)踐使用緩存頁面和效勞器控件處理防止到效勞器的不必要的往返行程〔客戶端異步回調(diào)〕使用IsPostBack只在必要時(shí)保存效勞器控件視圖狀態(tài)盡量使用緩沖使用Transfer狀態(tài)管理當(dāng)不使用會話狀態(tài)時(shí)禁用它選擇適宜的會話狀態(tài)提供程序進(jìn)程內(nèi)會話狀態(tài)作為Windows效勞的進(jìn)程外會話狀態(tài)SQLServer數(shù)據(jù)庫中的進(jìn)程外會話狀態(tài)數(shù)據(jù)訪問SQLServer數(shù)據(jù)庫中,推薦使用存儲過程訪問數(shù)據(jù)合理選擇數(shù)據(jù)訪問對象SqlDataReader:只讀訪問數(shù)據(jù)DataSet:提供更多類型的數(shù)據(jù)訪問操作Web應(yīng)用程序預(yù)編譯Web應(yīng)用IIS的回收進(jìn)程調(diào)整輔助進(jìn)程的線程數(shù)啟用網(wǎng)絡(luò)園藝禁用調(diào)試模式優(yōu)化配置文件編碼實(shí)踐盡量不要依賴代碼中的異常適當(dāng)?shù)厥褂美厥掌骱妥詣?dòng)內(nèi)存管理在托管代碼中重寫調(diào)用密集型的COM組件防止單線程單元(STA)COM組件使用緩存應(yīng)用程序緩存頁輸出緩存跟蹤檢測跟蹤概述頁面級跟蹤演示和練習(xí):查看頁面級跟蹤信息應(yīng)用程序級跟蹤演示和練習(xí):使用跟蹤查看器查看跟蹤信息ASP.NET跟蹤與System.Diagnostics跟蹤的集成演示和練習(xí):ASP.NET跟蹤與System.Diagnostics跟蹤的集成跟蹤概述為什么要使用跟蹤跟蹤輸出信息輸出信息類別說明請求詳細(xì)信息顯示關(guān)于當(dāng)前請求和響應(yīng)的常規(guī)信息跟蹤信息顯示頁級事件流。如果創(chuàng)建了自定義跟蹤消息,這些消息也將顯示在“跟蹤信息”部分。這部分通常是我們分析代碼執(zhí)行邏輯的重點(diǎn),可以從中查看頁面生命周期中各事件的執(zhí)行情況(如:執(zhí)行時(shí)間以及在事件中輸出的自定義輸出消息)等,從而判斷出代碼執(zhí)行效率等情況控件樹顯示關(guān)于在頁中創(chuàng)建的ASP.NET服務(wù)器控件的信息會話狀態(tài)顯示關(guān)于存儲在會話狀態(tài)中的值(如果有的話)的信息應(yīng)用程序狀態(tài)顯示關(guān)于存儲在應(yīng)用程序狀態(tài)中的值(如果有的話)的信息跟蹤概述〔續(xù)〕Cookie集合顯示關(guān)于針對每個(gè)請求和響應(yīng)在瀏覽器和服務(wù)器之間傳遞的Cookie的信息。該部分既顯示持久性Cookie,也顯示會話Cookie標(biāo)頭集合顯示關(guān)于請求和響應(yīng)消息的標(biāo)頭名稱/值對(提供關(guān)于消息體或所請求的資源的信息)的信息。標(biāo)頭信息用來控制請求消息的處理方式和響應(yīng)消息的創(chuàng)建方式窗體集合顯示名稱/值對,該名稱值/對顯示在POST(回發(fā))期間的請求中提交的窗體元素值(控件值)Querystring集合顯示在URL中傳遞的值。在URL中,查詢字符串信息通過問號(?)與路徑信息分隔開;多個(gè)查詢字符串元素用&符分隔開。查詢字符串名稱/值對通過等號(=)分隔開服務(wù)器變量顯示服務(wù)器相關(guān)的環(huán)境變量的集合和請求標(biāo)頭信息。HttpRequest對象的ServerVariables屬性返回服務(wù)器變量的NameValueCollection跟蹤輸出信息頁面級跟蹤:啟用與排序在頁面文件〔.aspx〕的@Page指令中設(shè)置Trace屬性為true,啟用頁面級跟蹤<%@PageTrace="true"%>設(shè)置TraceMode屬性指定跟蹤消息出現(xiàn)的順序SortByTime(默認(rèn))SortByCategory頁面級跟蹤:自定義輸出(編碼)啟用頁面〔default.aspx〕的頁面級跟蹤,并在頁面的默認(rèn)事件〔Page_Load〕中自定義輸出消息protectedvoidPage_Load(objectsender,EventArgse){Trace.Write("ASPNET_TRACE","Page_Load...");}頁面級跟蹤:自定義輸出(顯示)演示和練習(xí):查看頁面級跟蹤信息多媒體演示應(yīng)用程序級跟蹤在Web.config文件中配置應(yīng)用程序級跟蹤,通過對<trace>節(jié)點(diǎn)進(jìn)行設(shè)置,即可啟用或禁用應(yīng)用程序級跟蹤Enabled、pageOutput、RequestLimit、traceMode、localOnly、mostRecent<configuration><system.web><traceenabled="true"requestLimit="40"localOnly="false"/></system.web></configuration>演示和練習(xí):使用跟蹤查看器查看跟蹤信息多媒體演示ASP.NET跟蹤與System.Diagnostics跟蹤的集成ASP.NET跟蹤與System.Diagnostics跟蹤的集成的概述要讓業(yè)務(wù)類中通過調(diào)用類輸出的跟蹤輸出信息隨頁面跟蹤輸出一起呈現(xiàn),那么需要完成以下任務(wù):添加WebPageTraceListener對象添加編譯開關(guān)TRACE進(jìn)行編譯應(yīng)用ASP.NET跟蹤與System.Diagnostics跟蹤的集成在Web.Config文件中添加WebPageTraceListener對象或者,在Global.asax文件中添加WebPageTraceListener對象<system.diagnostics><trace><listeners><addname="WebPageTraceListener"type="System.Web.WebPageTraceListener,System.Web,Version=2.0.3600.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/></listeners></trace></system.diagnostics>voidApplication_Start(Objectsender,EventArgse){WebPageTraceListenergbTraceListener=newWebPageTraceListener();System.Diagnostics.Trace.Listeners.Add(gbTraceListener);}ASP.NET跟蹤與System.Diagnostics跟蹤的集成添加編譯開關(guān)TRACE進(jìn)行編譯應(yīng)用<system.codedom><compilers><compilerlanguage="c#;cs;csharp"extension=".cs"compilerOptions="/d:TRACE"type="Microsoft.CSharp.CSharpCodeProvider,System,Version=2.0.3500.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"warningLevel="1"/><compilerlanguage="VB“extension=".vb"compilerOptions="/d:Trace=true"type="Microsoft.VisualBasic.VBCodeProvider,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/></compilers></system.codedom>演示和練習(xí):ASP.NET跟蹤與System.Diagnostics跟蹤的集成多媒體演示緩存技術(shù)緩存概述應(yīng)用程序緩存頁輸出緩存緩存概述為什么使用緩存應(yīng)用程序可以將那些頻繁訪問的數(shù)據(jù),以及那些需要大量處理時(shí)間來創(chuàng)立的數(shù)據(jù)存儲在內(nèi)存中,從而提高性能緩存機(jī)制分類介紹應(yīng)用程序緩存頁輸出緩存應(yīng)用程序緩存應(yīng)用程序緩存的機(jī)制如何將項(xiàng)添加到緩存中演示和練習(xí):向緩存中添加項(xiàng)讀取緩存項(xiàng)從緩存中刪除項(xiàng)從緩存中刪除項(xiàng)時(shí)通知應(yīng)用程序演示和練習(xí):從緩存中刪除項(xiàng)時(shí)通知應(yīng)用程序應(yīng)用程序緩存的機(jī)制應(yīng)用程序緩存是由System.Web.Caching.Cache類實(shí)現(xiàn)的,緩存實(shí)例〔Cache對象〕是每個(gè)應(yīng)用程序?qū)S玫?,并且每個(gè)應(yīng)用只有一個(gè),通過Page類或UserControl類的Cache屬性公開緩存生存期依賴于應(yīng)用程序的生存期,當(dāng)重新啟動(dòng)應(yīng)用程序后,將重新創(chuàng)立Cache對象,也就是說緩存數(shù)據(jù)將被清空如何將項(xiàng)添加到緩存中添加緩存項(xiàng)設(shè)置緩存依賴項(xiàng)設(shè)置緩存過期策略設(shè)置緩存優(yōu)先級添加緩存項(xiàng)通過鍵和值直接設(shè)置項(xiàng)使用Insert方法將項(xiàng)添加到緩存中Cache[“ProductCategories〞]=dsCategories; //dsCategories是產(chǎn)品分類信息Cache.Insert("ProductCategories",dsCategories);//dsCategories是產(chǎn)品分類信息設(shè)置緩存依賴項(xiàng)為什么要設(shè)置依賴項(xiàng)依賴項(xiàng)分類鍵依賴項(xiàng)文件依賴項(xiàng)SQL依賴項(xiàng)聚合依賴項(xiàng)自定義依賴項(xiàng)設(shè)置緩存依賴項(xiàng)添加緩存項(xiàng)的鍵依賴項(xiàng)Cache.Insert("CacheItem2","CacheItem2",newSystem.Web.Caching.CacheDependency(null,newstring[]{"CacheItem1"}));設(shè)置緩存依賴項(xiàng)添加緩存項(xiàng)的文件依賴項(xiàng)Cache.Insert("FinanceData","CachedItem4",newSystem.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml")));設(shè)置緩存依賴項(xiàng)添加緩存項(xiàng)的SQL依賴項(xiàng)使用SqlCacheDependency對象來創(chuàng)立依賴于數(shù)據(jù)庫表中的記錄,添加步驟如下:在Web.config文件的caching節(jié)點(diǎn)定義緩存使用的數(shù)據(jù)庫名稱使用代碼依賴于該連接對應(yīng)數(shù)據(jù)庫的某個(gè)表的緩存項(xiàng)Cache.Insert("cacheitem1","CacheItem1",newSqlCacheDependency("AdvWorks","Product"));設(shè)置緩存依賴項(xiàng)添加緩存項(xiàng)的聚合依賴項(xiàng)用類添加多個(gè)依賴項(xiàng)System.Web.Caching.CacheDependencydep1=newSystem.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml"));Cache["CacheItem1"]="CacheItem1"string[]keyDependencies2={"CacheItem1"};System.Web.Caching.CacheDependencydep2=newSystem.Web.Caching.CacheDependency(null,keyDependencies2);System.Web.Caching.AggregateCacheDependencyaggDep=newSystem.Web.Caching.AggregateCacheDependency();aggDep.Add(dep1); aggDep.Add(dep2);Cache.Insert("CacheItem2","CachedItem2",aggDep);設(shè)置緩存過期策略通過Cache類自定義如何緩存項(xiàng)以及將它們緩存多長時(shí)間。過期類別有:絕對過期可調(diào)性過期Cache.Insert("CacheItem1","CachedItem1",null,System.Web.Caching.Cache.NoAbsoluteExpiration,newTimeSpan(0,30,0));Cache.Insert("CacheItem1","CacheItem1",null,DateTime.Now.AddMinutes(30),System.Web.Caching.Cache.NoSlidingExpiration);設(shè)置緩存的優(yōu)先級用Add或Insert方法添加項(xiàng)時(shí)指定一個(gè)CacheItemPriority枚舉值Cache.Insert("CacheItem1","CachedItem1",null,System.Web.Caching.Cache.NoAbsoluteExpiration,System.Web.Caching.Cache.NoSlidingExpiration,System.Web.Caching.CacheItemPriority.High,null);演示和練習(xí):向緩存中添加項(xiàng)多媒體演示讀取緩存項(xiàng)通過鍵來檢索被緩存的項(xiàng)if(Cache["ProductCategories"]!=null){DataSetdsCategories=(DataSet)Cache["ProductCategories"];}從緩存中刪除項(xiàng)在以下情況下,緩存自動(dòng)刪除緩存已滿該項(xiàng)已過期依賴項(xiàng)發(fā)生更改通過代碼方式刪除調(diào)用Cache類的Remove()方法來刪除緩存項(xiàng)Cache.Remove("ProductCategories");從緩存中刪除項(xiàng)時(shí)通知應(yīng)用程序CacheItemRemovedCallback委托該委托定義編寫事件處理程序時(shí)使用的簽名,當(dāng)對從緩存中刪除項(xiàng)進(jìn)行響應(yīng)時(shí)會調(diào)用此事件處理程序CacheItemRemovedReason枚舉用于指定刪除緩存項(xiàng)的原因演示和練習(xí):從緩存中移除項(xiàng)時(shí)通知應(yīng)用程序多媒體演示頁輸出緩存頁輸出緩存概述使用頁輸出緩存設(shè)置頁的可緩存性演示和練習(xí):緩存整個(gè)頁面緩存一個(gè)頁面的多個(gè)版本演示和練習(xí):緩存一個(gè)頁面的多個(gè)版本局部頁緩存演示和練習(xí):緩存后替換使用SqlCacheDependency類在ASP.NET中緩存演示和練習(xí):使用SqlCacheDependency類在ASP.NET中緩存頁輸出緩存概述頁輸出緩存是指在緩存ASP.NET頁所生成的局部響應(yīng)或所有響應(yīng)提高Web應(yīng)用程序的性能提高Web效勞器的吞吐量設(shè)置頁的可緩存性:聲明性設(shè)置其一:在頁面文件(.aspx)或用戶控件文件〔.ascx〕中添加@OutputCache指令來完成,并設(shè)置屬性:Duration、Location和VaryByParam或VaryByControl其二:在Web.config文件中定義緩存配置文件,在配置文件中包括Location、duration和varyByParam設(shè)置,在頁面或用戶控件文件中包含@OutputCache指令,并將CacheProfile屬性設(shè)置為Web.config文件中定義的緩存配置文件的名稱<%@OutputCacheLocation="Server"Duration="60"VaryByParam="None"%>設(shè)置頁的可緩存性:編程設(shè)置通過類來設(shè)置和控制頁輸出緩存Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));Response.Cache.SetCacheability(HttpCacheability.Public);Response.Cache.SetValidUntilExpires(true);演示和練習(xí):緩存整個(gè)頁面多媒體演示緩存一個(gè)頁面的多個(gè)版本使用VaryByParam屬性來設(shè)置網(wǎng)頁的多個(gè)版本,緩存因素有:初始請求(HTTPGET)中的查詢字符串回發(fā)時(shí)傳遞的控制值〔HTTPPOST值〕隨請求傳遞的HTTP標(biāo)頭發(fā)出請求的瀏覽器的主版本號頁中的自定義字符串HttpCachePolicy類<%@OutputCacheDuration="30"VaryByParam="ProductID"%>演示和練習(xí):緩存一個(gè)頁面的多個(gè)版本多媒體演示局部頁緩存控件緩存控件緩存〔也稱為片段緩存〕,可以通過創(chuàng)立用戶控件來包含緩存的內(nèi)容,然后將用戶控件標(biāo)記為可緩存來緩存局部頁輸出緩存后替換以聲明方式使用Substitution控件以編程方式使用Substitution控件API以隱式方式使用AdRotator控件演示和練習(xí):緩存后替換多媒體演示使用SqlCacheDependency類在ASP.NET中緩存使用System.Web.Caching.SqlCacheDependency類創(chuàng)立依賴于數(shù)據(jù)庫中表或行的緩存項(xiàng)<%@OutputCacheDuration="30"VaryByParam="none"SqlDependency="AdvWorks:Product"%>演示和練習(xí):使用SqlCacheDependency類在ASP.NET中緩存多媒體演示在Web應(yīng)用中的異步處理異步處理概述頁面的異步處理演示和練習(xí):創(chuàng)立一個(gè)異步處理的頁面異步調(diào)用Web效勞演示和練習(xí):異步調(diào)用Web效勞客戶端異步演示和練習(xí):在網(wǎng)頁中實(shí)現(xiàn)客戶端回調(diào)數(shù)據(jù)的異步訪問異步處理概述在主應(yīng)用程序線程以外的線程中執(zhí)行翻開大文件、連接遠(yuǎn)程計(jì)算機(jī)或數(shù)據(jù)庫查詢等耗時(shí)較長的任務(wù)增加整個(gè)應(yīng)用的吞吐量,提高應(yīng)用的響應(yīng)速度頁面的異步處理:同步執(zhí)行和異步執(zhí)行頁面流程頁面的異步處理:關(guān)鍵任務(wù)設(shè)定頁面@Page指令中設(shè)置屬性Async為true在Page_Load事件方法中調(diào)用Page類的AddOnPreRenderCompleteAsync方法,為異步頁面注冊異步處理的開始和結(jié)束事件處理程序委托在效勞器端申明異步請求的發(fā)起方法〔BeginGetAsyncData〕和結(jié)束后調(diào)用的方法〔EndGetAsyncData〕,并在Page_Load方法中通過調(diào)用Page類的AddOnPreRenderCompleteAsync方法注冊這兩個(gè)方法演示和練習(xí):創(chuàng)立一個(gè)異步處理頁面多媒體演示異步調(diào)用Web效勞:Begin/End模式Wsdl.exe為Web效勞中發(fā)布的每項(xiàng)操作自動(dòng)創(chuàng)立三個(gè)方法代理類中方法的名稱說明<NameOfWebServiceMethod>為名為<NameOfWebServiceMethod>的Web服務(wù)方法同步發(fā)送消息Begin<NameOfWebServiceMethod>開始與名為<NameOfWebServiceMethod>的Web服務(wù)方法的異步消息通信。客戶端指示Begin方法開始對服務(wù)調(diào)用進(jìn)行處理,但立即返回。返回值不是Web服務(wù)方法指定的數(shù)據(jù)類型,而是實(shí)現(xiàn)

IAsyncResult接口的類型End<NameOfWebServiceMethod>結(jié)束與名為<NameOfWebServiceMethod>的Web

服務(wù)方法的異步消息通信,返回的值是Web服務(wù)方法調(diào)用的結(jié)果異步調(diào)用Web效勞:事件驅(qū)動(dòng)的異步編程模式基于事件處理回調(diào)的新的異步編程模型,可以簡化生成多線程應(yīng)用程序的過程,而不必自己實(shí)現(xiàn)復(fù)雜的多線程代碼演示和練習(xí):異步調(diào)用Web效勞多媒體演示客戶端異步需要實(shí)現(xiàn)的接口:實(shí)現(xiàn)ICallbackEventHandler接口實(shí)現(xiàn)RaiseCallbackEvent和GetCallbackResult接口方法需要實(shí)現(xiàn)的客戶端三個(gè)腳本函數(shù):實(shí)現(xiàn)一個(gè)調(diào)用幫助器方法的函數(shù)實(shí)現(xiàn)一個(gè)clientCallBack的函數(shù)實(shí)現(xiàn)一個(gè)執(zhí)行對效勞器的實(shí)際請求的Helper函數(shù)演示和練習(xí):在網(wǎng)頁中實(shí)現(xiàn)客戶端回調(diào)多媒體演示數(shù)據(jù)庫的異步訪問ADO.NET在其SqlCommand類,對BeginExecuteNonQuery、BeginExecuteReader和BeginExecuteXmlReader方法〔與EndExecuteNonQuery、EndExecuteReader和EndExecuteXmlR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論