資源描述:
《Web應(yīng)用性能優(yōu)化》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、ASP.NETWebApp性能優(yōu)化性能概述性能是一項功能測試Web應(yīng)用的性能關(guān)鍵的性能指標(biāo)性能是一項功能設(shè)計時就考慮性能不要在事后再加入性能!在項目開發(fā)的整個過程中反復(fù)測試兩種量化Web性能的方法:1)機器吞吐率(requests/sec)2)響應(yīng)時間(timetofirst/lastbytes)測試Web性能通過給服務(wù)器加負(fù)載來測試使用多臺客戶端機器加載免費MicrosoftWebApplicationStress工具測試多種場景:模擬對站點的端對端場景遍歷測試單頁性能需計算的數(shù)值:不同負(fù)載下的Request/sec(100
2、,250,500,750,1000等等同時訪問的客戶)辨明在可接受TTFB/TTLB響應(yīng)時間內(nèi)的最大客戶負(fù)載關(guān)鍵的性能指標(biāo)處理器,CPU%使用率低數(shù)值=受阻或者鎖競爭ASP.NET,入列請求數(shù)線性增長意味著服務(wù)器已滿負(fù)荷ASP.NET應(yīng)用,每秒請求數(shù)動態(tài)吞吐量(應(yīng)當(dāng)一致)ASP.NET應(yīng)用,總錯誤數(shù)指示功能錯誤(應(yīng)當(dāng)是0)ASP.NET應(yīng)用,工作進(jìn)程重啟指示嚴(yán)重功能錯誤常用的優(yōu)化措施1.會話狀態(tài)的恰當(dāng)選擇2.Viewstate優(yōu)化3.Cache優(yōu)化4.控件優(yōu)化與選擇5.返回多個記錄集6.數(shù)據(jù)分頁優(yōu)化7.Ado.Net對象選擇8
3、.數(shù)據(jù)前綁定9.存儲過程優(yōu)化,C#Coding優(yōu)化1.會話狀態(tài)的恰當(dāng)選擇ASP.NET通過將會話狀態(tài)信息存儲在進(jìn)程、狀態(tài)服務(wù)器或SQLServer數(shù)據(jù)庫中來解決這個問題。4、="sqlserver"sqlConnectionString="datasource=127.0.0.1;userid=sa;password="cookieless="false"timeout="20"/>StateServer:表示狀態(tài)服務(wù)在一臺名為myserver的機器的42424端口(默認(rèn)端口)運行。要在服務(wù)器上改變端口,可編輯HKLMSYSTEMCurrentControlSetServicesaspnet_state注冊表項中的Port值。管理員需要創(chuàng)建ASPState數(shù)據(jù)庫,方法是運行WinDirM
5、icrosoft.NetFrameworkVersion文件夾中的InstallState.sql腳本。要配置SQL服務(wù)器,可以在命令行中運行SQLServer提供的命令行工具osql.exeosql-S[servername]-U[user]-P[password]InstallSqlState.sql2.Viewstate優(yōu)化ViewState是什么什么地方可以不需要ViewState(1)頁面控件(.ascx)(2)頁面不回傳給自身。(3)無需對控件的事件處理。(4)控件沒有動態(tài)的或數(shù)據(jù)綁定的屬性值如何禁用ViewS
6、tate單個頁面:<%@PageEnableViewState="False"%>每個頁面:在web.config中控件:ViewState屬性定義:保持頁面或控件狀態(tài)的視圖對象。--使用ViewState,每個對象都必須先序列化到ViewState中,回傳時再進(jìn)行反序列化,因此使用ViewState是有代價的。3.Cache優(yōu)化緩存簡介頁面緩存頁面整體緩存局部頁面緩存數(shù)據(jù)緩存3.Cache優(yōu)化System.Web.Caching:CacheCache的使用注意事項
7、:Cache即時更新Cache時限指定文件或目錄變更,則原Cache項不可用使用順序注意項privateCache_cache;插入Cache:_cache.Insert(key,obj,dep,DateTime.Now.AddSeconds(),TimeSpan.Zero,priority,null);移除Cache:_cache.Remove(key);獲取Cache中對象objectocache=_cache[key];Cache清除:IDictionaryEnumeratorenumerator=_cache.GetE
8、numerator();while(enumerator.MoveNext()){_cache.Remove(enumerator.Key.ToString());}//從上下文中讀緩存項datatablenewstb=HttpContext.Current.Items[ca