域名注冊 網(wǎng)站制作
您現(xiàn)在的位置:首頁 >> 網(wǎng)站建設(shè) >> 內(nèi)容

IIS啟用Gzip壓縮(HTTP壓縮)過程詳解

時間:2015/3/18 15:10:21 點擊:238

摘要:一.摘要 本文總結(jié)了如何為使用IIS托管的網(wǎng)站啟用Gzip壓縮,從而減少網(wǎng)頁網(wǎng)絡(luò)傳輸大小,提高用戶顯示頁面的速度.二.前言.本文的知識點是從互聯(lián)網(wǎng)收集整理,主要來源于中文wiki....

一.摘要

本文總結(jié)了如何為使用IIS托管的網(wǎng)站啟用Gzip壓縮, 從而減少網(wǎng)頁網(wǎng)絡(luò)傳輸大小, 提高用戶顯示頁面的速度.

二.前言

本文的知識點是從互聯(lián)網(wǎng)收集整理, 主要來源于中文wiki. 使用YSlow檢測網(wǎng)站啟用了哪些優(yōu)化時, Gzip是十分關(guān)鍵的一項. 啟動Gip壓縮將立竿見影的減少頁面的網(wǎng)絡(luò)傳輸大小.

三.HTTP壓縮概述

HTTP壓縮是在Web服務(wù)器和瀏覽器間傳輸壓縮文本內(nèi)容的方法。HTTP壓縮采用通用的壓縮算法如gzip等壓縮HTML、JavaScript或CSS文件。壓縮的最大好處就是降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,從而提高客戶端瀏覽器的訪問速度。當(dāng)然,同時也會增加一點點服務(wù)器的負擔(dān)。Gzip是比較常見的一種HTTP壓縮算法。

四.HTTP壓縮工作原理

Web服務(wù)器處理HTTP壓縮的工作原理如下:

1.Web服務(wù)器接收到瀏覽器的HTTP請求后,檢查瀏覽器是否支持HTTP壓縮;

在用戶瀏覽器發(fā)送請求的HTTP頭中, 帶有"Accept-Encoding: gzip, deflate"參數(shù)則表明支持gzip和deflate兩種壓縮算法.

2.如果瀏覽器支持HTTP壓縮,Web服務(wù)器檢查請求文件的后綴名;

靜態(tài)文件和動態(tài)文件后綴啟動要所都需要在MetaBase.xml中設(shè)置.

靜態(tài)文件需要設(shè)置: HcFileExtensions Metabase Property (單擊跳轉(zhuǎn)到MSDN說明)

動態(tài)文件需要設(shè)置: HcScriptFileExtensions Metabase Property (單擊跳轉(zhuǎn)到MSDN說明)

3.如果請求文件是HTML、CSS等靜態(tài)文件并且文件后綴啟用了壓縮,則Web服務(wù)器到壓縮緩沖目錄中檢查是否已經(jīng)存在請求文件的最新壓縮文件;

4.如果請求文件的壓縮文件不存在,Web服務(wù)器向瀏覽器返回未壓縮的請求文件,并在壓縮緩沖目錄中存放請求文件的壓縮文件;

5.如果請求文件的最新壓縮文件已經(jīng)存在,則直接返回請求文件的壓縮文件;

6.如果請求文件是ASPX等動態(tài)文件并且文件后綴啟用了壓縮,Web服務(wù)器動態(tài)壓縮內(nèi)容并返回瀏覽器,壓縮內(nèi)容不存放到壓縮緩存目錄中。

五. 在IIS中啟用HTTP壓縮

IIS默認并不支持HTTP壓縮,需要進行簡單的配置

1.打開Internet信息服務(wù)(IIS)管理器,右擊"網(wǎng)站"->"屬性",選擇"服務(wù)"。在"HTTP壓縮"框中選中"壓縮應(yīng)用程序文件"和"壓縮靜態(tài)文件",按需要設(shè)置"臨時目錄"和"臨時目錄的最大限制";

IIS啟用Gzip壓縮(HTTP壓縮)過程詳解

2.提醒: 經(jīng)試驗此步驟在本人機器上沒有作用, 可以忽略.

在Internet信息服務(wù)(IIS)管理器,右擊"Web服務(wù)擴展"->"增加一個新的Web服務(wù)擴展...",在"新建Web服務(wù)擴展"框中輸入擴展名"HTTP Compression",添加"要求的文件"為C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系統(tǒng)目錄根據(jù)您的安裝可能有所不同,選中"設(shè)置擴展狀態(tài)為允許";

IIS啟用Gzip壓縮(HTTP壓縮)過程詳解

3.使用文本編輯器打開C:\Windows\System32\inetsrv\MetaBase.xml(建議先備份),

找到Location ="/LM/W3SVC/Filters/Compression/gzip用于設(shè)置gzip壓縮,

找到Location ="/LM/W3SVC/Filters/Compression/deflate"用于設(shè)置deflate壓縮.

上面兩個節(jié)點緊挨著.并且設(shè)置的屬性相同.

如果需要壓縮動態(tài)文件,則將HcDoDynamicCompression設(shè)置為"TRUE",并在HcScriptFileExtensions中增加您要壓縮的動態(tài)文件后綴名,如aspx;如果需要壓縮靜態(tài)文件,則將HcDoStaticCompression和HcDoOnDemandCompression設(shè)置為"TRUE",并在HcFileExtensions中增加您需要壓縮的靜態(tài)文件后綴名,如xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數(shù)值在0-10, 默認為0.

HcDynamicCompressionLevel屬性說明:HcDynamicCompressionLevel Metabase Property

HcOnDemandCompLevel 屬性說明:HcOnDemandCompLevel Metabase Property

說明: 這兩個屬性值一般推薦設(shè)置為9, 具有最佳性價比.但是在我的window server 2003上, 壓縮率無論如何設(shè)置, jQuery和jQuery UI兩個文件(58k/188k)壓縮后的大小一直相同.(20k/45k).

下面是我的實例:

<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/deflate"
        HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
        HcCreateFlags="0"
        HcDoDynamicCompression="TRUE"
        HcDoOnDemandCompression="TRUE"
        HcDoStaticCompression="true"
        HcDynamicCompressionLevel="9"
        HcFileExtensions="htm
                     html
                     txt
                     js
                     css
                    swf
                     xml"
        HcOnDemandCompLevel="9"
        HcPriority="1"
        HcScriptFileExtensions="asp
           aspx
            dll
            exe"
    ></IIsCompressionScheme><IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/gzip"
        HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
        HcCreateFlags="1"
        HcDoDynamicCompression="TRUE"
        HcDoOnDemandCompression="TRUE"
        HcDoStaticCompression="true"
        HcDynamicCompressionLevel="9"
        HcFileExtensions="htm
                     html
                     txt
                     js
                     css
                    swf
                     xml"
        HcOnDemandCompLevel="9"
        HcPriority="1"
        HcScriptFileExtensions="asp
           aspx
            dll
            exe"
    ></IIsCompressionScheme>

4.編輯完畢后保存MetaBase.xml文件;如果文件無法保存,則可能IIS正在使用該文件。打開"開始"->"管理工具"->"服務(wù)",停止"IIS Admin Service"后,即可保存;

5.最后,重新啟動IIS?梢缘紿TTP壓縮測試網(wǎng)站驗證結(jié)果.以jQuery為例, 核心類庫和UI類庫原始大小分別是57k和188k,壓縮后分別是20k和45k:

IIS啟用Gzip壓縮(HTTP壓縮)過程詳解

我們通過Http頭中的: Content-Encoding:gzip 屬性判斷返回后的數(shù)據(jù)已經(jīng)啟用了gzip壓縮:

IIS啟用Gzip壓縮(HTTP壓縮)過程詳解

使用YSlow檢測, 當(dāng)只啟動靜態(tài)文件壓縮時, Gzip壓縮評級為B:

IIS啟用Gzip壓縮(HTTP壓縮)過程詳解

當(dāng)同時啟動了動態(tài)文件壓縮時, Gzip壓縮評級為A:

IIS啟用Gzip壓縮(HTTP壓縮)過程詳解

六.要點總結(jié)

1. 在修改MetaBase.xml文件時, 要停止"IIS Admin Service"服務(wù). 否則無法保存.

2.靜態(tài)壓縮和動態(tài)壓縮率最好設(shè)置為9.

3.上文的步驟2, 即使不添加Web服務(wù)擴展效果也是相同的.

4.壓縮率設(shè)置對js文件不起作用, 壓縮后大小總是相同的.

5.圖片文件即使啟用了gzip壓縮大小也沒有變化.

七. 總結(jié)

本文總結(jié)了如何在IIS中啟用Gzip壓縮. 在半年前的項目中我為網(wǎng)站啟用了Gzip, 今天整理此文主要為了整理自己的知識以便以后忘記時復(fù)習(xí). 另外經(jīng)查看ChinaCache公司提供的CDN也都啟用了Gzip壓縮.

--cnblogs

轉(zhuǎn)載請保留原文地址: http://jeyalandpromoters.com/show-461.html

責(zé)編:王麗 作者:不詳 來源:網(wǎng)絡(luò)