【原創】構建高性能ASP.NET站點 第六章—性能瓶頸診斷與初步調優(下前篇)—簡單的優化措施

原文: 【原創】構建高性能ASP.NET站點 第六章—性能瓶頸診斷與初步調優(下前篇)—簡單的優化措施

構建高性能ASP.NET站點 第六章性能瓶頸診斷與初步調優(下前篇)簡單的優化措施html

    前言:本篇給出一些在部署ASP.NET站點時採用的簡單的優化措施。同時很也很是的感謝朋友對昨天發的文章的支持,本篇的內容很少,也比較的簡單!前端

   

    本篇議題以下:   web

    識別和分析服務端的性能瓶頸()瀏覽器

   內存(前篇)緩存

   緩存(前篇)服務器

    CPU(前篇)架構

   處理請求線程(前篇)dom

提升性能的一些簡單改進措施(下)ide

         部署優化(前篇)工具

         減小沒必要要回傳(前篇)

         減小沒必要要的請求(後篇)

        

 

 

  系列文章連接:

  構建高性能ASP.NET站點 開篇

  構建高性能ASP.NET站點之一 剖析頁面的處理過程(前端)

  構建高性能ASP.NET站點之二 優化HTTP請求(前端)

  構建高性能ASP.NET站點之三 細節決定成敗

  構建高性能ASP.NET站點 第五章—性能調優綜述(前篇)

  大型高性能ASP.NET系統架構設計  

  構建高性能ASP.NET站點 第五章—性能調優綜述(中篇)

  構建高性能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上面右擊屬性,而後去設置也是能夠的)

 

 

 

如今雖然SolutionRelease方式了,可是若是咱們去查看這個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/folderIIS會自動進行一些重定向到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.代碼:

 

Response.StatusCode  =   301 ;
Response.AddHeader(
" Location " " NewPage.aspx " );
Response.End();

 

   ASP.NET 4.0 及之後的版本:

Response.RedirectPermanent( " NewPage.aspx " );

  

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配置以下:

 

代碼
< configuration >
  
< location  path ="OldPage.aspx" >
    
< system.webServer >
       <httpRedirect enabled="true" destination="NewPage.aspx" httpResponseStatus="Permanent" />
    
</ system.webServer >
  
</ location >
</ configuration >

 

 

    今天就到這裏,多謝各位!

相關文章
相關標籤/搜索