構建高性能ASP.NET站點 第六章—性能瓶頸診斷與初步調優(下前篇)—簡單的優化措施html
前言:本篇給出一些在部署ASP.NET站點時採用的簡單的優化措施。同時很也很是的感謝朋友對昨天發的文章的支持,本篇的內容很少,也比較的簡單!前端
本篇議題以下: web
識別和分析服務端的性能瓶頸(上)瀏覽器
內存(前篇)緩存
緩存(前篇)服務器
CPU(前篇)架構
處理請求線程(前篇)dom
提升性能的一些簡單改進措施(下)ide
部署優化(前篇)工具
減小沒必要要回傳(前篇)
減小沒必要要的請求(後篇)
系列文章連接:
構建高性能ASP.NET站點之一 剖析頁面的處理過程(前端)
構建高性能ASP.NET站點 第六章—性能瓶頸診斷與初步調優(上篇)—識別性能瓶頸
構建高性能ASP.NET站點 第六章—性能瓶頸診斷與初步調優(下前篇)—簡單的優化措施
構建高性能ASP.NET站點 第六章—性能瓶頸診斷與初步調優(下後篇)—減小沒必要要的請求
構建高性能ASP.NET站點 第七章 如何解決內存的問題(前篇)—託管資源優化—垃圾回收機制深度剖析
構建高性能ASP.NET站點 第七章 如何解決內存的問題(前中篇)—託管資源優化—監測CLR性能
部署優化
咱們都知道,不一樣的部署方式對站點的性能是有影響的,可能有些朋友已經知道了這點,無論怎樣,咱們這裏仍是詳細系統的講述一下這個問題,熟悉的朋友權當回顧J。
Release方式編譯項目
若是咱們的項目是用Project的方式創建的,也就是說:咱們的站點包含在一個Solution解決方案中,那麼在發佈以前,編譯項目的時候,採用release方式,這種方式會減小CPU的使用率。由於採用debug的方式發佈,編譯器會編譯後的代碼中加入不少的信息,如調試信息等。
操做步驟:
1. 在VS中,選擇」 Build | Configuration Manager」.以下:
2. 在」Active Solution Configuration」下拉框如今」」Release」,而後」Close」.那麼Solution就以Release方式編譯。(其實使得Solution編譯爲Release的方法不少,例如在Solution上面右擊」屬性」,而後去設置也是能夠的)
如今雖然Solution是Release方式了,可是若是咱們去查看這個Solution下面的ASP.NET站點程序的config文件,發現仍是deubg方式的。那麼咱們在發佈站點的時候,須要手動的去修改成release。
注:若是Solution是以debug方式編譯,即便web.config設置了release,最後發佈的站點的代碼仍是方式的。
站點發布
發佈的步驟以下:
1. 修改web.config配置以下:
2. 在站點上面右鍵選擇」Publish」.以下:
減小沒必要要的回傳
咱們都知道,從服務端到客戶端的回傳每次都是須要花費必定的時間的,並且加長了用戶等待的時間。因此有些回傳則是可免則免。
Server.Transfer Vs Response.Redirect
若是咱們須要在服務端把用戶定向到另外的一個頁面,那麼考慮一下:儘可能使用Server.Transfer,而不是使用Response.Redirect。
由於當使用Response.Redirect的時候,服務端會向客戶端的瀏覽器發送一個響應:告訴瀏覽器去加載轉向的那個頁面。而後瀏覽器再次發送請求到服務端去請求另外的那個頁面。
當咱們使用Server.Transfer的時候,服務端就馬上執行跳轉。這樣作的一個很差的地方可能就是:此時請求的是A.aspx,其實服務端已經跳轉到了B.aspx頁面,可是瀏覽器上面的Url仍是顯示的A.aspx。
當使用Server.Transfer須要注意:肯定每次訪問A頁面都須要跳轉到B頁面的時候,就是用Server.Transfer。例如,拿博客園來舉例,當用戶在沒有登陸的時候想對正在閱讀的一篇文章評論,那麼此時,頁面就會跳轉到Login的登錄頁面,登錄以後,頁面就跳轉到以前看文章的那個頁面,而後寫評論。此時的這個跳轉就不適合用Server.Transfer,而採用Response.Redirect。若是無論用戶在哪裏,只要用戶登錄,那麼老是跳到一個固定的頁面,那麼就可使用Server.Transfer。
還有就是Server.Transfer畢竟會消耗服務端的資源,使用的時候要注意。
經過上面能夠看出:調優原本就是一個折中的過程,不是絕對的。調優最後說到底就是」時空轉換—時間換空間,空間換時間」。
聲明站點的默認頁面
當咱們請求一個站點的時候,如http://domain/folder,IIS會自動進行一些重定向到http://domain/folder/。同時,http.sys也不會把沒有聲明默認頁面的站點的默認首頁加入到內核的緩存中(可能說的有點的繞),例如,若是在程序中,咱們設置站點的默認頁面時Default.aspx,可是咱們在部署到IIS的時候,沒有配置Default.aspx就是站點的默認頁面,那麼這個頁面的內容不會被http.sys緩存到內核中。因此爲了不IIS重定向和容許http.sys緩存頁面,咱們在IIS中要配置站點的默認頁面(或者每次在瀏覽器中輸入http://domain/folder/default.aspx,可是咱們不能控制用戶的行爲,因此這招這幾乎不可能)
永久跳轉相關話題
若是咱們站點的某個頁面過時了或者再也不用了,那麼咱們就能夠採用301永久跳轉。當服務端向客戶端發出301響應的時候,瀏覽器和代理都會去更新他們的緩存(若是以前的舊頁面採用了緩存),並且搜索引擎也會採用新的頁面。
要讓服務端向客戶端發送301響應,以下的方式:
1.代碼:
在ASP.NET 4.0 及之後的版本:
2. IIS配置
a) IIS 6配置
1. 在IIS中站點中,選中你想跳轉的文件或者目錄。
2. 選中」A redirection to a URL」
3. 而後輸入你想跳轉到的頁面。
4. 而後選中」The exact url entered above」和」A permanent redirect for this resource」。
b) IIS 7
在Server 2008上面
1. 打開」開始」->」管理工具」->」服務器管理」
2. 在IIS上面添加」角色服務」
3. 在」常見Http功能」下面選中」Http重定向」
4. 而後安裝。
在Win7 上面,以下:
而後,在咱們的站點的web.config配置以下:
今天就到這裏,多謝各位!