高性能ASP.NET站點(diǎn)構(gòu)建之簡(jiǎn)單的優(yōu)化措施
高性能ASP.NET站點(diǎn)構(gòu)建系列文章目錄
- 高性能ASP.NET站點(diǎn)構(gòu)建之開篇
 - 高性能ASP.NET站點(diǎn)構(gòu)建之剖析頁(yè)面的處理過(guò)程
 - 高性能ASP.NET站點(diǎn)構(gòu)建之優(yōu)化HTTP請(qǐng)求
 - 高性能ASP.NET站點(diǎn)構(gòu)建之細(xì)節(jié)決定成敗
 - 高性能ASP.NET站點(diǎn)構(gòu)建之性能調(diào)優(yōu)綜述
 - 高性能ASP.NET站點(diǎn)構(gòu)建之識(shí)別性能瓶頸
 - 高性能ASP.NET站點(diǎn)構(gòu)建之簡(jiǎn)單的優(yōu)化措施
 - ASP.NET站點(diǎn)構(gòu)建之減少不必要的請(qǐng)求
 - 高性能ASP.NET站點(diǎn)構(gòu)建之托管資源優(yōu)化
 - 高性能ASP.NET站點(diǎn)構(gòu)建之監(jiān)測(cè)CLR性能
 
部署優(yōu)化
我們都知道,不同的部署方式對(duì)站點(diǎn)的性能是有影響的,可能有些朋友已經(jīng)知道了這點(diǎn),不管怎樣,我們這里還是詳細(xì)系統(tǒng)的講述一下這個(gè)問(wèn)題,熟悉的朋友權(quán)當(dāng)回顧J。
Release方式編譯項(xiàng)目
如果我們的項(xiàng)目是用Project的方式建立的,也就是說(shuō):我們的站點(diǎn)包含在一個(gè)Solution解決方案中,那么在發(fā)布之前,編譯項(xiàng)目的時(shí)候,采用release方式,這種方式會(huì)減少CPU的使用率。因?yàn)椴捎胐ebug的方式發(fā)布,編譯器會(huì)編譯后的代碼中加入很多的信息,如調(diào)試信息等。
操作步驟:
1. 在VS中,選擇” Build | Configuration Manager”.如下:
2. 在”Active Solution Configuration”下拉框現(xiàn)在””Release”,然后”Close”.那么Solution就以Release方式編譯。(其實(shí)使得Solution編譯為Release的方法很多,例如在Solution上面右擊”屬性”,然后去設(shè)置也是可以的)

現(xiàn)在雖然Solution是Release方式了,但是如果我們?nèi)ゲ榭催@個(gè)Solution下面的ASP.NET站點(diǎn)程序的config文件,發(fā)現(xiàn)還是deubg方式的。那么我們?cè)诎l(fā)布站點(diǎn)的時(shí)候,需要手動(dòng)的去修改為release。
注:如果Solution是以debug方式編譯,即使web.config設(shè)置了release,最后發(fā)布的站點(diǎn)的代碼還是方式的。
站點(diǎn)發(fā)布
發(fā)布的步驟如下:
1. 修改web.config配置如下:
2. 在站點(diǎn)上面右鍵選擇”Publish”.如下:
 
減少不必要的回傳
我們都知道,從服務(wù)端到客戶端的回傳每次都是需要花費(fèi)一定的時(shí)間的,而且加長(zhǎng)了用戶等待的時(shí)間。所以有些回傳則是可免則免。
Server.Transfer Vs Response.Redirect
如果我們需要在服務(wù)端把用戶定向到另外的一個(gè)頁(yè)面,那么考慮一下:盡量使用Server.Transfer,而不是使用Response.Redirect。
因?yàn)楫?dāng)使用Response.Redirect的時(shí)候,服務(wù)端會(huì)向客戶端的瀏覽器發(fā)送一個(gè)響應(yīng):告訴瀏覽器去加載轉(zhuǎn)向的那個(gè)頁(yè)面。然后瀏覽器再次發(fā)送請(qǐng)求到服務(wù)端去請(qǐng)求另外的那個(gè)頁(yè)面。
當(dāng)我們使用Server.Transfer的時(shí)候,服務(wù)端就立刻執(zhí)行跳轉(zhuǎn)。這樣做的一個(gè)不好的地方可能就是:此時(shí)請(qǐng)求的是A.aspx,其實(shí)服務(wù)端已經(jīng)跳轉(zhuǎn)到了B.aspx頁(yè)面,但是瀏覽器上面的Url還是顯示的A.aspx。
當(dāng)使用Server.Transfer需要注意:確定每次訪問(wèn)A頁(yè)面都需要跳轉(zhuǎn)到B頁(yè)面的時(shí)候,就是用Server.Transfer。例如,拿博客園來(lái)舉例,當(dāng)用戶在沒(méi)有登錄的時(shí)候想對(duì)正在閱讀的一篇文章評(píng)論,那么此時(shí),頁(yè)面就會(huì)跳轉(zhuǎn)到Login的登陸頁(yè)面,登陸之后,頁(yè)面就跳轉(zhuǎn)到之前看文章的那個(gè)頁(yè)面,然后寫評(píng)論。此時(shí)的這個(gè)跳轉(zhuǎn)就不適合用Server.Transfer,而采用Response.Redirect。如果不管用戶在哪里,只要用戶登陸,那么總是跳到一個(gè)固定的頁(yè)面,那么就可以使用Server.Transfer。
還有就是Server.Transfer畢竟會(huì)消耗服務(wù)端的資源,使用的時(shí)候要注意。
通過(guò)上面可以看出:調(diào)優(yōu)本來(lái)就是一個(gè)折中的過(guò)程,不是絕對(duì)的。調(diào)優(yōu)最后說(shuō)到底就是”時(shí)空轉(zhuǎn)換—時(shí)間換空間,空間換時(shí)間”。
聲明站點(diǎn)的默認(rèn)頁(yè)面
當(dāng)我們請(qǐng)求一個(gè)站點(diǎn)的時(shí)候,如http://domain/folder,IIS會(huì)自動(dòng)進(jìn)行一些重定向到http://domain/folder/。同時(shí),http.sys也不會(huì)把沒(méi)有聲明默認(rèn)頁(yè)面的站點(diǎn)的默認(rèn)首頁(yè)加入到內(nèi)核的緩存中(可能說(shuō)的有點(diǎn)的繞),例如,如果在程序中,我們?cè)O(shè)置站點(diǎn)的默認(rèn)頁(yè)面時(shí)Default.aspx,但是我們?cè)诓渴鸬絀IS的時(shí)候,沒(méi)有配置Default.aspx就是站點(diǎn)的默認(rèn)頁(yè)面,那么這個(gè)頁(yè)面的內(nèi)容不會(huì)被http.sys緩存到內(nèi)核中。所以為了避免IIS重定向和允許http.sys緩存頁(yè)面,我們?cè)贗IS中要配置站點(diǎn)的默認(rèn)頁(yè)面(或者每次在瀏覽器中輸入http://domain/folder/default.aspx,但是我們不能控制用戶的行為,所以這招這幾乎不可能)
永久跳轉(zhuǎn)相關(guān)話題
如果我們站點(diǎn)的某個(gè)頁(yè)面過(guò)期了或者不再用了,那么我們就可以采用301永久跳轉(zhuǎn)。當(dāng)服務(wù)端向客戶端發(fā)出301響應(yīng)的時(shí)候,瀏覽器和代理都會(huì)去更新他們的緩存(如果之前的舊頁(yè)面采用了緩存),而且搜索引擎也會(huì)采用新的頁(yè)面。
要讓服務(wù)端向客戶端發(fā)送301響應(yīng),如下的方式:
1.代碼:
在ASP.NET 4.0 及以后的版本:
Response.RedirectPermanent("NewPage.aspx");
2. IIS配置
a) IIS 6配置
1. 在IIS中站點(diǎn)中,選中你想跳轉(zhuǎn)的文件或者目錄。
2. 選中”A redirection to a URL”
3. 然后輸入你想跳轉(zhuǎn)到的頁(yè)面。
4. 然后選中”The exact url entered above”和”A permanent redirect for this resource”。
b) IIS 7
在Server 2008上面
1. 打開”開始”->”管理工具”->”服務(wù)器管理”
 
2. 在IIS上面添加”角色服務(wù)”

3. 在”常見Http功能”下面選中”Http重定向”

4. 然后安裝。
在Win7 上面,如下:
 
然后,在我們的站點(diǎn)的web.config配置如下:
- <configuration>
 - <location path="OldPage.aspx">
 - <system.webServer>
 - <httpRedirect enabled="true" destination="NewPage.aspx" httpResponseStatus="Permanent" />
 - </system.webServer>
 - </location>
 - </configuration>
 
今天就到這里,多謝各位!
原文鏈接:http://www.cnblogs.com/yanyangtian/archive/2011/02/15/1954804.html
【編輯推薦】
- 高性能ASP.NET站點(diǎn)構(gòu)建之開篇
 - 高性能ASP.NET站點(diǎn)構(gòu)建之剖析頁(yè)面的處理過(guò)程
 - 高性能ASP.NET站點(diǎn)構(gòu)建之優(yōu)化HTTP請(qǐng)求
 - 高性能ASP.NET站點(diǎn)構(gòu)建之細(xì)節(jié)決定成敗
 - 高性能ASP.NET站點(diǎn)構(gòu)建之性能調(diào)優(yōu)綜述
 - 高性能ASP.NET站點(diǎn)構(gòu)建之識(shí)別性能瓶頸
 - 微軟PDC2009直擊:改進(jìn)ASP.NET 4運(yùn)行時(shí)
 















 
 
 


 
 
 
 