概述:
【概述】在這一章節(jié),我們的主題聚焦在基礎(chǔ)設(shè)施建設(shè)上。1.Http Compression(壓縮)2.Content Expirations (內(nèi)容過(guò)期)3.Content Distribution Networks - CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))4.Etags (E標(biāo)簽)5.去掉沒必要的Http header【Compression】我們前邊提到過(guò),性能規(guī)則中的
【概述】
在這一章節(jié),我們的主題聚焦在基礎(chǔ)設(shè)施建設(shè)上。
1.Http Compression(壓縮)
2.Content Expirations (內(nèi)容過(guò)期)
3.Content Distribution Networks - CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))
4.Etags (E標(biāo)簽)
5.去掉沒必要的Http header
【Compression】
我們前邊提到過(guò),性能規(guī)則中的一條就是在服務(wù)器和瀏覽器之間傳輸?shù)臄?shù)據(jù)越少越好。介于此規(guī)則,我們可以使用一個(gè)比較成熟的技術(shù):Http Compression。
1.Server 端會(huì)評(píng)估客戶端發(fā)來(lái)的http request中header里的“Accept-Encoding”。來(lái)確定客戶端是否能處理壓縮過(guò)的數(shù)據(jù)。如果支持,server端會(huì)去對(duì)數(shù)據(jù)進(jìn)行壓縮并返回結(jié)果到客戶端。
2.在keynote這個(gè)第三方服務(wù)評(píng)估的結(jié)果是,可以平均節(jié)省53%的帶寬,,網(wǎng)站平均快了25%。
3.現(xiàn)在IIS也提供這種技術(shù)的支持(免費(fèi)的)
IIS7 對(duì) compression 的支持
1.支持配置當(dāng)cpu占用率過(guò)高時(shí),自動(dòng)停止使用
2.默認(rèn)最小的文件大小是256k。
3.默認(rèn)啟動(dòng)靜態(tài)內(nèi)容的壓縮
如果你對(duì)IIS 使用compression 感興趣。可以參見:http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx
【在IIS中配置Compression】
打開IIS。選中一個(gè)你的網(wǎng)站。在右邊選項(xiàng)卡里選擇壓縮(compression)

也許有的朋友會(huì)發(fā)現(xiàn),動(dòng)態(tài)壓縮是灰色的。其實(shí)是我們沒安裝動(dòng)態(tài)壓縮模塊。我使用的是win7。安裝方法如下:
控制面板-》程序-》開啟或關(guān)閉windows功能-》Internet 信息服務(wù)-》萬(wàn)維網(wǎng)服務(wù)-》性能功能(猥瑣)-》動(dòng)態(tài)內(nèi)容壓縮
如果是win server版本的朋友需要:
1.Administrative Tools | Server Manager。
2.展開Roles,點(diǎn)擊Web Server(IIS)。
3.滾動(dòng)到Role Services,點(diǎn)擊Add Role Services,打開Add Role Services向?qū)А?/p>
4.在Select Role Services頁(yè)面,滾動(dòng)到Performance,選擇Dynamic Content Compression,選擇下一步。
現(xiàn)在我們還用第一章里用到的那個(gè)網(wǎng)站做測(cè)試。打開fiddler。

記下每個(gè)文件的大小。返回到IIS,開啟動(dòng)態(tài)壓縮和靜態(tài)壓縮。現(xiàn)在IIS 再接收到請(qǐng)求我的js和css文件時(shí)。它先會(huì)判斷是否已經(jīng)壓縮過(guò)唄請(qǐng)求的文件。如果沒有它會(huì)進(jìn)行壓縮,并且存儲(chǔ)到某一個(gè)目錄。其他用戶同樣請(qǐng)求相同的文件時(shí),它直接獲取壓縮過(guò)的文件即可。
現(xiàn)在我們回到fiddler看看結(jié)果吧。

jquery 文件從236K被壓縮到90k。其他js和css文件也都受到相應(yīng)的壓縮。
現(xiàn)在我們?cè)偈褂蒙弦徽碌牧硪话牙鱩icrosoft network monitor觀察壓縮前和壓縮后 來(lái)看看發(fā)生了什么變化。
壓縮前:
壓縮后:
非常容易使用 MS Network monitor 對(duì)比出。壓縮前后,frame的數(shù)目明顯的減少了,從40條減少到9條。
由于95%以上的請(qǐng)求都會(huì)被詢問(wèn)是否啟用compression。所以主流的瀏覽器都支持compression。
啟用compression會(huì)占用少許的cpu。IIS7 對(duì)這一塊做了優(yōu)化。
為了確保壓縮沒有使CPU超載,IIS7每30秒計(jì)算平均CPU利用率。當(dāng)CPU利用率超過(guò)一個(gè)限制時(shí),它會(huì)自動(dòng)關(guān)閉壓縮。當(dāng)CPU利用率低于限制時(shí), 它會(huì)重新啟用壓縮。
限制的默認(rèn)值是:
注意這意味著如果服務(wù)器上的CPU一直在50%以上,但偶然高于90%,動(dòng)態(tài)文件壓縮會(huì)被關(guān)閉,但再也不會(huì)重新開啟了。
可以通過(guò)修改applicationHost.config文件修改這些限制,通常它在C:WindowsSystem32inetsrvconfig文件夾下。
找到<httpCompression>節(jié)。
2.修改httpdynamicCompressionEnableCpuUsage屬性:<httpCompressiondynamicCompressionEnableCpuUsage="70"...>
3.重啟IIS。

