自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【網(wǎng)站性能指南】之三基礎(chǔ)建設(shè)

開發(fā) 前端
我們前邊提到過,性能規(guī)則中的一條就是在服務(wù)器和瀏覽器之間傳輸?shù)臄?shù)據(jù)越少越好。介于此規(guī)則,我們可以使用一個比較成熟的技術(shù):Http Compression

在這一章節(jié),我們的主題聚焦在基礎(chǔ)設(shè)施建設(shè)上。

Http Compression(壓縮);Content Expirations (內(nèi)容過期);Content Distribution Networks - CDN(內(nèi)容分發(fā)網(wǎng)絡(luò));Etags (E標簽);去掉沒必要的Http header

【Compression】

我們前邊提到過,性能規(guī)則中的一條就是在服務(wù)器和瀏覽器之間傳輸?shù)臄?shù)據(jù)越少越好。介于此規(guī)則,我們可以使用一個比較成熟的技術(shù):Http Compression。

Server 端會評估客戶端發(fā)來的http request中header里的"Accept-Encoding”。來確定客戶端是否能處理壓縮過的數(shù)據(jù)。如果支持,server端會去對數(shù)據(jù)進行壓縮并返回結(jié)果到客戶端。

在keynote這個第三方服務(wù)評估的結(jié)果是,可以平均節(jié)省53%的帶寬,,網(wǎng)站平均快了25%。

現(xiàn)在IIS也提供這種技術(shù)的支持(免費的)

IIS7 對 compression 的支持

支持配置當cpu占用率過高時,自動停止使用

默認最小的文件大小是256k。

默認啟動靜態(tài)內(nèi)容的壓縮

如果你對IIS 使用compression 感興趣??梢詤⒁姡?a >http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx

【在IIS中配置Compression】

打開IIS。選中一個你的網(wǎng)站。在右邊選項卡里選擇壓縮(compression)

也許有的朋友會發(fā)現(xiàn),動態(tài)壓縮是灰色的。其實是我們沒安裝動態(tài)壓縮模塊。我使用的是win7。安裝方法如下:

控制面板-》程序-》開啟或關(guān)閉windows功能-》Internet 信息服務(wù)-》萬維網(wǎng)服務(wù)-》性能功能(猥瑣)-》動態(tài)內(nèi)容壓縮

如果是win server版本的朋友需要:

Administrative Tools | Server Manager。

展開Roles,點擊Web Server(IIS)。

滾動到Role Services,點擊Add Role Services,打開Add Role Services向?qū)А?/p>

在Select Role Services頁面,滾動到Performance,選擇Dynamic Content Compression,選擇下一步。

現(xiàn)在我們還用***章里用到的那個網(wǎng)站做測試。打開fiddler。

記下每個文件的大小。返回到IIS,開啟動態(tài)壓縮和靜態(tài)壓縮?,F(xiàn)在IIS 再接收到請求我的js和css文件時。它先會判斷是否已經(jīng)壓縮過唄請求的文件。如果沒有它會進行壓縮,并且存儲到某一個目錄。其他用戶同樣請求相同的文件時,它直接獲取壓縮過的文件即可。

現(xiàn)在我們回到fiddler看看結(jié)果吧。

jquery 文件從236K被壓縮到90k。其他js和css文件也都受到相應(yīng)的壓縮。

現(xiàn)在我們再使用上一章的另一把利器microsoft network monitor觀察壓縮前和壓縮后  來看看發(fā)生了什么變化。

壓縮前:

壓縮后:

非常容易使用 MS Network monitor 對比出。壓縮前后,frame的數(shù)目明顯的減少了,從40條減少到9條。

由于95%以上的請求都會被詢問是否啟用compression。所以主流的瀏覽器都支持compression。

啟用compression會占用少許的cpu。IIS7 對這一塊做了優(yōu)化。

為了確保壓縮沒有使CPU超載,IIS7每30秒計算平均CPU利用率。當CPU利用率超過一個限制時,它會自動關(guān)閉壓縮。當CPU利用率低于限制時, 它會重新啟用壓縮。

限制的默認值是:

注意這意味著如果服務(wù)器上的CPU一直在50%以上,但偶然高于90%,動態(tài)文件壓縮會被關(guān)閉,但再也不會重新開啟了。

可以通過修改applicationHost.config文件修改這些限制,通常它在C:\Windows\System32\inetsrv\config文件夾下。

找到<httpCompression>節(jié)。

2.修改httpdynamicCompressionEnableCpuUsage屬性:<httpCompressiondynamicCompressionEnableCpuUsage="70".... >

3.重啟IIS。

#p#

【Content Expirations】

回顧一下我們***張講過的性能規(guī)則。有一條是盡可能不經(jīng)常地傳輸數(shù)據(jù)。

一個用戶訪問我網(wǎng)站的首頁,他會得到我的js,css和圖片等文件。瀏覽器則替他保存到本地的緩存中。過了幾天用戶又來訪問我的網(wǎng)站了。服務(wù)器還會看看瀏覽器緩存中有木有他要的文件。如果有的話,它會告訴server。我有這個文件。但是我想知道它的版本是不是***的。服務(wù)器會看看這個文件到底改沒改。如果改了,服務(wù)器會發(fā)送新的文件。如果沒,服務(wù)器會返回給瀏覽器狀態(tài)碼304。濤聲依舊。

304.沒改。

利用瀏覽器緩存:

對于content folder 設(shè)置過期時間

盡量避免請求不經(jīng)常改動的文件

重命名文件,如果需要重寫瀏覽器緩存(版本號/時間戳)

【在IIS中配置Content Expirations】

打開IIS。選中你的站點。選中scripts文件夾(裝js的地方。如果有的話)在視圖選項卡里找到HTTP 響應(yīng)標頭并進入。

右上角,設(shè)置常用標頭-》使web內(nèi)容過期。我們設(shè)置5天吧。這時候訪問我們的網(wǎng)站。使用fiddler 觀察結(jié)果如下:

那個max-age 我們算算 。正好是5天:)現(xiàn)在我們再打開IE。internet選項-》瀏覽歷史記錄-》設(shè)置-》查看文件

找到我們的js文件。查看屬性,8月7號過期,正好5天:)

#p#

【CDN】

另一個對于提高網(wǎng)站性能有效的辦法就是使用CDN了。

CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。其基本思路是盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母臁⒏€(wěn)定。通過在網(wǎng)絡(luò)各處放置節(jié)點服務(wù)器所構(gòu)成的在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),CDN系統(tǒng)能夠?qū)崟r地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點的連接、負載狀況以及到用戶的距離和響應(yīng)時間等綜合信息將用戶的請求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點上。其目的是使用戶可就近取得所需內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度。

在這里我只做簡單介紹,需要了解更詳細信息,請參見:http://en.wikipedia.org/wiki/Content_delivery_network

看到這里讀者肯定會說我屌絲了。不解釋還廢話那么多干什么?CDN都是大公司用的和我們有關(guān)系么?

下面我來講講我們可以利用到的CDN:

JQuery是現(xiàn)在***的js library之一。google、microsoft、jquery.com都免費host了jquery庫在它們的cdn上。請看下圖:

我在這里可以使用我們自己的服務(wù)器上的jquery文件。也可以選擇從google、微軟和jquery官網(wǎng)的cnd來讀。即可以給自己服務(wù)器減少壓力。也可以利用cnd加快讀取速度。

【ETags】

什么是ETags?Etag的全稱是 entity tag。ETag實際上是一個hash+changeNumber組成的值。hash由文件內(nèi)容生成。IIS7中changeNumber默認是0; 

本章前邊內(nèi)容提到,我們通過設(shè)置內(nèi)容過期,利用瀏覽器緩存達到性能優(yōu)化的效果,會使用expires headers告訴瀏覽器,不用再發(fā)送條件GET請求給服務(wù)器啦,直接用緩存里面的數(shù)據(jù)就可以啦,從而加快訪問速度。

Etags 使用過程如下:

1.客戶端請求一個資源source 。

2.服務(wù)器返回頁面souce,并在給source加上一個ETag。

3.客戶端展現(xiàn)該頁面,并將頁面連同ETag一起緩存。

4.客戶再次請求資源source,并將上次請求時服務(wù)器返回的ETag一起傳遞給服務(wù)器。

5.服務(wù)器檢查該ETag,并判斷出該頁面自上次客戶端請求之后還未被修改,直接返回響應(yīng)304(未修改——Not Modified)和一個空的響應(yīng)體。

從此看來Etag有可能會誤導(dǎo)瀏覽器,讓瀏覽器忽略緩存重復(fù)下載相同的文件。

我們試著從刪除ETAG。

先看看沒刪除之前ETAG長什么樣?

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. /// <summary>  
  6. /// Summary description for ETagRemoveModule  
  7. /// </summary>  
  8. public class ETagRemoveModule : System.Web.IHttpModule  
  9. {  
  10.     public ETagRemoveModule()  
  11.     {  
  12.         //  
  13.         // TODO: Add constructor logic here  
  14.         //  
  15.     }  
  16.     public void Dispose()  
  17.     {  
  18.  
  19.     }  
  20.     public void Init(HttpApplication context)  
  21.     {  
  22.         context.EndRequest += new EventHandler(HandlerEndRequest);  
  23.     }  
  24.     public void HandlerEndRequest(Object sender, EventArgs e)  
  25.     {  
  26.     System.Web.HttpContext.Current.Response.Headers.Remove("ETag");  
  27.     }  
  1. <system.webServer>  
  2.   <modules>  
  3.     <add name="ETagRemoveModule.cs" type="ETagRemoveModule"/>  
  4.   </modules>  
  5. </system.webServer> 

ETags就沒啦:)

#p#

【去掉沒必要的Http header】

我們使用fiddler 可以看到,http response header 包含了很多信息。

但是有些信息是沒必要展示給用戶看的。比如我們使用了.netframework 4.0.我們使用IIS7.5。

首先它是多余的信息。其次它也有可能被一些駭客利用。

所以我們修改一下我們的代碼:

  1. public void HandlerEndRequest(Object sender, EventArgs e)  
  2.     {  
  3.         HttpResponse oResponse = System.Web.HttpContext.Current.Response;  
  4.         if (null != oResponse)  
  5.         {  
  6.             oResponse.Headers.Remove("X-AspNet-Version");  
  7.             oResponse.Headers.Remove("Server");  
  8.             oResponse.Headers.Remove("ETag");  
  9.  
  10.         }  
  11.     } 

現(xiàn)在我們的header干凈多了,也安全多了。

參考文獻:

http://technet.microsoft.com/en-us/library/cc730629.aspx

http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx

http://www.infoq.com/cn/articles/etags

http://www.webusability.cn/what-is-etag-howto-remove-etags-iis6-iis7-759/

http://en.wikipedia.org/wiki/Content_delivery_network

原文鏈接:http://www.cnblogs.com/techborther/archive/2012/08/03/2620223.html

【編輯推薦】

  1. 【網(wǎng)站性能指南】之一概述
  2. 【網(wǎng)站性能指南】之二網(wǎng)站性能測量神器
  3. 【網(wǎng)站性能指南】之四前端性能
  4. Web前端應(yīng)該掌握的初、中、高、技能
  5. 學(xué)習(xí)Web開發(fā)技術(shù)***教程網(wǎng)站和博客
責(zé)任編輯:張偉 來源: 技術(shù)弟弟的博客
相關(guān)推薦

2012-08-20 13:42:48

Web

2012-08-20 09:56:27

Web

2012-08-20 09:22:32

2009-10-13 10:48:17

互聯(lián)網(wǎng)基礎(chǔ)建設(shè)

2012-06-28 14:58:08

SUSEOpenStack

2010-06-27 21:42:58

廣電行業(yè)機房環(huán)境基礎(chǔ)建設(shè)

2020-07-09 11:05:22

新華三

2011-06-23 09:09:12

2017-11-01 10:36:53

2022-03-18 14:14:02

物聯(lián)網(wǎng)智慧城市數(shù)字技術(shù)

2015-11-05 16:45:21

數(shù)據(jù)中心基礎(chǔ)建設(shè)

2020-03-26 11:32:17

物聯(lián)網(wǎng)智慧城管信息技術(shù)

2023-08-13 16:49:54

2018-02-10 09:17:07

運營商NB-IoT4G

2011-06-14 10:35:15

性能優(yōu)化

2011-07-13 16:08:09

Web

2017-04-26 13:22:51

2011-06-29 18:12:52

網(wǎng)站優(yōu)化

2010-06-28 14:11:23

基調(diào)網(wǎng)路中國網(wǎng)站性能行業(yè)參考數(shù)據(jù)

2014-04-16 09:56:09

行業(yè)網(wǎng)站性能指數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號