歡迎來(lái)到合肥浪訊網(wǎng)絡(luò)科技有限公司官網(wǎng)
  咨詢服務(wù)熱線:400-099-8848

七巧招提高.NET網(wǎng)站功能

發(fā)布時(shí)間:2019-12-18 文章來(lái)源:本站  瀏覽次數(shù):3008

運(yùn)用下面的辦法可以削減Web服務(wù)器和Browser之間的往復(fù)行程:

1、為Browser啟用緩存

假如出現(xiàn)的內(nèi)容是靜態(tài)的或改變周期較長(zhǎng),應(yīng)啟用Browser緩存,防止宣布冗余的http懇求。

2、緩沖頁(yè)面輸出

假如或許,則盡量緩沖頁(yè)面輸出,處理完畢后再一次傳送到客戶端,這可以防止頻頻傳遞小塊內(nèi)容所形成的屢次網(wǎng)絡(luò)交互。因?yàn)檫@種辦法在頁(yè)面處理完畢之前客戶端無(wú)法看到頁(yè)面內(nèi)容,因此假如一個(gè)頁(yè)面的尺寸較大的話,可考慮運(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)用,完全沒(méi)有這些開(kāi)銷!

需求留意Server.Transfer有局限性:第一,它會(huì)跳過(guò)安全檢查;第二,只適用于在同一Web運(yùn)用內(nèi)的頁(yè)面間跳轉(zhuǎn)。

二、防止堵塞和長(zhǎng)期的作業(yè)


假如需求運(yùn)轉(zhuǎn)堵塞或長(zhǎng)期運(yùn)轉(zhuǎn)的操作,可以考慮運(yùn)用異步調(diào)用的機(jī)制,以便Web服務(wù)器能夠繼續(xù)處理其它的懇求。

1、運(yùn)用異步辦法調(diào)用Web服務(wù)和長(zhǎng)途目標(biāo)

只需有或許就要防止在懇求的處理過(guò)程中對(duì)Web服務(wù)和長(zhǎng)途目標(biāo)的同步調(diào)用,因?yàn)樗加玫氖堑腁SP.NET 線程池中的作業(yè)線程,這將直接影響Web服務(wù)器呼應(yīng)其它懇求的才干。

2、考慮給不需求回來(lái)值的Web辦法或長(zhǎng)途目標(biāo)的辦法增加OneWay特點(diǎn)

這種形式能讓W(xué)eb Server調(diào)用之后就當(dāng)即回來(lái)?筛鶕(jù)實(shí)際狀況決定是否運(yùn)用這種辦法。

3、運(yùn)用作業(yè)隊(duì)列

將作業(yè)提交到服務(wù)器上的作業(yè)隊(duì)列中?蛻舳私(jīng)過(guò)發(fā)送懇求來(lái)輪詢作業(yè)的履行結(jié)果。

三、運(yùn)用緩存


緩存能在很大程度上決定ASP.NET運(yùn)用的最終功能。Asp.net支撐頁(yè)面輸出緩存和頁(yè)面部分緩存,并供給Cache API,供運(yùn)用程序緩存自己的數(shù)據(jù)。是否運(yùn)用緩存可考慮下面的要點(diǎn):

1、識(shí)別創(chuàng)立與訪問(wèn)價(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)用)

四、多線程


1、防止在懇求處理過(guò)程中創(chuàng)立線程

在履行懇求的過(guò)程中創(chuàng)立線程是一種價(jià)值較大的操作,會(huì)嚴(yán)重影響Web Server的功能。假如后續(xù)的操作必須用線程完結(jié),建議經(jīng)過(guò)thread pool來(lái)創(chuàng)立/管理線程。

2、不要依賴線程數(shù)據(jù)槽或線程靜態(tài)變量

因?yàn)槁男袘┣蟮木程是ASP.NET thread pool中的作業(yè)線程,同一個(gè)Client的兩次懇求不一定由相同的線程來(lái)處理。

3、防止堵塞處理懇求的線程

4、防止異步調(diào)用

這和1的狀況相似。異步調(diào)用會(huì)導(dǎo)致創(chuàng)立新的線程,增加服務(wù)器的負(fù)擔(dān)。所以,假如沒(méi)有并發(fā)的作業(yè)要履行,就不要履行異步調(diào)用。

五、系統(tǒng)資源


1、考慮完成資源池以提升功能

2、明確地調(diào)用Dispose或Close開(kāi)釋系統(tǒng)資源

3、不要緩存或長(zhǎng)期占用資源池中的資源

4、盡或許晚的申請(qǐng),盡或許早的開(kāi)釋

六、頁(yè)面處理


1、盡量減小Page的尺寸

包含縮短控件的名稱、CSS的class的名稱、去掉無(wú)謂空行和空格、禁用不需求的ViewState

2、啟用頁(yè)面輸出的緩沖區(qū)(Buffer)

假如Buffer的機(jī)制被封閉,可以用下面的辦法打開(kāi)。

運(yùn)用程序打開(kāi)頁(yè)面輸出緩存:

Response.BufferOutput = true;

運(yùn)用@Page開(kāi)關(guān)打開(kāi)頁(yè)面輸出緩沖機(jī)制:

<%@ Page Buffer = "true" %>

運(yùn)用Web.config或Machine.config配置文件的節(jié)點(diǎn):

3、利用Page.IsPostBack優(yōu)化頁(yè)面輸出

4、經(jīng)過(guò)別離頁(yè)面的不同的內(nèi)容,來(lái)提高緩存效率和削減出現(xiàn)的時(shí)刻

5、優(yōu)化雜亂和價(jià)值較大的循環(huán)

6、合理利用客戶端的計(jì)算資源,將一些操作轉(zhuǎn)移到客戶端進(jìn)行

七、ViewState


ViewState是Asp.net為服務(wù)端控件在頁(yè)面回傳之間盯梢狀態(tài)信息而規(guī)劃的一種機(jī)制。

1. 封閉ViewState

假如不需求盯梢頁(yè)面狀態(tài),例如頁(yè)面不會(huì) 回傳(PostBack)、不需求處理服務(wù)端控件事件或許每次頁(yè)面改寫時(shí)都會(huì)重新計(jì)算控件內(nèi)容,那么就不需求用ViewState來(lái)記錄頁(yè)面狀態(tài)了?梢詫(duì)特定的WebControl設(shè)置EnableViewState特點(diǎn),也可以在頁(yè)面一級(jí)設(shè)置:

<%@ Page EnableViewState="false" %>

2、在恰當(dāng)?shù)臅r(shí)刻點(diǎn)初始化控件特點(diǎn)

ASP.NET的控件在履行構(gòu)造函數(shù)、初始化的期間設(shè)置的特點(diǎn)不會(huì)被盯梢改變;而在初始化階段之后對(duì)特點(diǎn)的修改都會(huì)被盯梢,并最終記錄到IE頁(yè)面的__VIEWSTATE之中。所以,挑選合理的初始化控件特點(diǎn)的履行點(diǎn),能有用的減小頁(yè)面尺寸。

3、謹(jǐn)慎挑選放到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é):光有了這些技術(shù)辦法還不夠,還需求將這些辦法根據(jù)你網(wǎng)站的狀況靈活運(yùn)用,適時(shí)調(diào)整辦法,會(huì)集處理重要問(wèn)題,這有這樣網(wǎng)站功能才干得到大幅度的優(yōu)化

上一條:網(wǎng)頁(yè)標(biāo)準(zhǔn)的界說(shuō)是什么...

下一條:交互規(guī)劃形式——空間回憶...