七巧招進(jìn)步.NET網(wǎng)站功能 |
發(fā)布時(shí)間:2019-11-14 文章來源:本站 瀏覽次數(shù):2902 |
一、削減往復(fù)行程(Reduce Round Trips)
1、為Browser啟用緩存 假如出現(xiàn)的內(nèi)容是靜態(tài)的或改變周期較長(zhǎng),應(yīng)啟用Browser緩存,防止宣布冗余的http懇求。 2、緩沖頁面輸出 假如可能,則盡量緩沖頁面輸出,處理完畢后再一次傳送到客戶端,這能夠防止頻頻傳遞小塊內(nèi)容所形成的多次網(wǎng)絡(luò)交互。由于這種辦法在頁面處理完畢之前客戶端無法看到頁面內(nèi)容,因此假如一個(gè)頁面的尺度較大的話,可考慮運(yùn)用Response.Flush辦法。該辦法強(qiáng)制輸出迄今為止在緩沖區(qū)中的內(nèi)容,你應(yīng)當(dāng)選用合理的算法操控調(diào)用Response.Flush辦法的次數(shù)。 3、運(yùn)用Server.Transfer重定向懇求 運(yùn)用Server.Transfer辦法重定向懇求優(yōu)于Response.Redirect辦法。原因是Response.Redirect會(huì)向Broswer回送一個(gè)呼應(yīng)頭,在呼應(yīng)頭中指出重定向的URL,之后Brower運(yùn)用新的URL重新宣布懇求。而Server.Transfer辦法直接是一個(gè)簡(jiǎn)單的服務(wù)端調(diào)用,徹底沒有這些開支! 需求注意Server.Transfer有局限性:第一,它會(huì)跳過安全檢查;第二,只適用于在同一Web運(yùn)用內(nèi)的頁面間跳轉(zhuǎn)。 二、防止堵塞和長(zhǎng)時(shí)刻的作業(yè)
1、運(yùn)用異步辦法調(diào)用Web服務(wù)和長(zhǎng)途目標(biāo) 只要有可能就要防止在懇求的處理過程中對(duì)Web服務(wù)和長(zhǎng)途目標(biāo)的同步調(diào)用,因?yàn)樗加玫氖堑腁SP.NET 線程池中的作業(yè)線程,這將直接影響Web服務(wù)器呼應(yīng)其它懇求的能力。 2、考慮給不需求返回值的Web辦法或長(zhǎng)途目標(biāo)的辦法增加OneWay特點(diǎn) 這種模式能讓W(xué)eb Server調(diào)用之后就當(dāng)即返回?筛鶕(jù)實(shí)際狀況決定是否運(yùn)用這種辦法。 3、運(yùn)用作業(yè)行列 將作業(yè)提交到服務(wù)器上的作業(yè)行列中?蛻舳私(jīng)過發(fā)送懇求來輪詢作業(yè)的履行成果。 三、運(yùn)用緩存
1、識(shí)別創(chuàng)立與訪問代價(jià)較大的數(shù)據(jù) 2、評(píng)價(jià)需求緩存數(shù)據(jù)的易變性 3、評(píng)價(jià)數(shù)據(jù)的運(yùn)用頻次 4、 將要緩存數(shù)據(jù)中易變數(shù)據(jù)和不變數(shù)據(jù)別離,只緩存不變數(shù)據(jù) 5、挑選合適的緩存機(jī)制(除Asp.net Cache外,Application state和Session state也能夠作為緩存運(yùn)用) 四、多線程
在履行懇求的過程中創(chuàng)立線程是一種代價(jià)較大的操作,會(huì)嚴(yán)重影響Web Server的功能。假如后續(xù)的操作必須用線程完結(jié),主張經(jīng)過thread pool來創(chuàng)立/辦理線程。 2、不要依賴線程數(shù)據(jù)槽或線程靜態(tài)變量 由于履行懇求的線程是ASP.NET thread pool中的作業(yè)線程,同一個(gè)Client的兩次懇求不一定由相同的線程來處理。 3、防止堵塞處理懇求的線程 4、防止異步調(diào)用 這和1的狀況類似。異步調(diào)用會(huì)導(dǎo)致創(chuàng)立新的線程,增加服務(wù)器的負(fù)擔(dān)。所以,假如沒有并發(fā)的作業(yè)要履行,就不要履行異步調(diào)用。 五、系統(tǒng)資源
2、明確地調(diào)用Dispose或Close開釋系統(tǒng)資源 3、不要緩存或長(zhǎng)時(shí)刻占用資源池中的資源 4、盡可能晚的申請(qǐng),盡可能早的開釋 六、頁面處理
包括縮短控件的稱號(hào)、CSS的class的稱號(hào)、去掉無謂空行和空格、禁用不需求的ViewState 2、啟用頁面輸出的緩沖區(qū)(Buffer) 假如Buffer的機(jī)制被封閉,能夠用下面的辦法翻開。 運(yùn)用程序翻開頁面輸出緩存: Response.BufferOutput = true; 運(yùn)用@Page開關(guān)翻開頁面輸出緩沖機(jī)制: <%@ Page Buffer = "true" %> 運(yùn)用Web.config或Machine.config配置文件的節(jié)點(diǎn):
3、運(yùn)用Page.IsPostBack優(yōu)化頁面輸出 4、經(jīng)過別離頁面的不同的內(nèi)容,來進(jìn)步緩存功率和削減出現(xiàn)的時(shí)刻 5、優(yōu)化雜亂和代價(jià)較大的循環(huán) 6、合理運(yùn)用客戶端的核算資源,將一些操作轉(zhuǎn)移到客戶端進(jìn)行 七、ViewState
1. 封閉ViewState 假如不需求盯梢頁面狀況,例如頁面不會(huì) 回傳(PostBack)、不需求處理服務(wù)端控件事情或許每次頁面改寫時(shí)都會(huì)重新核算控件內(nèi)容,那么就不需求用ViewState來記錄頁面狀況了。能夠?qū)μ囟ǖ腤ebControl設(shè)置EnableViewState特點(diǎn),也能夠在頁面一級(jí)設(shè)置: <%@ Page EnableViewState="false" %> 2、在恰當(dāng)?shù)臅r(shí)刻點(diǎn)初始化控件特點(diǎn) ASP.NET的控件在履行結(jié)構(gòu)函數(shù)、初始化的期間設(shè)置的特點(diǎn)不會(huì)被盯梢改變;而在初始化階段之后對(duì)特點(diǎn)的修改都會(huì)被盯梢,并終究記錄到IE頁面的__VIEWSTATE之中。所以,挑選合理的初始化控件特點(diǎn)的履行點(diǎn),能有效的減小頁面尺度。 3、慎重挑選放到ViewState中的內(nèi)容 放到ViewState中的內(nèi)容會(huì)被序列化/反序列化,Asp.net為String、Integer、Boolean等根本類型的序列化做了優(yōu)化,假如Array、ArrayList、HashTable存儲(chǔ)的是根本類型功率也較高,但其它類型則需求供給類型轉(zhuǎn)換器(Type Converter),否則將運(yùn)用代價(jià)昂貴的二進(jìn)制序列化程序。 總結(jié):光有了這些技能辦法還不夠,還需求將這些辦法根據(jù)你網(wǎng)站的狀況靈活運(yùn)用,當(dāng)令調(diào)整辦法,集中解決重要問題,這有這樣網(wǎng)站功能才干得到大幅度的優(yōu)化 |
|