關(guān)于IIS下gzip無法正常啟用的問題,按照網(wǎng)上的教程,我折騰了很長時(shí)間也不行,就是怎么也不能正常啟用。后來經(jīng)過仔細(xì)的研究,才找到了答案。
一. HTTP壓縮概述
HTTP壓縮是在Web服務(wù)器和瀏覽器間傳輸壓縮文本內(nèi)容的方法。HTTP壓縮采用通用的壓縮算法如gzip等壓縮HTML、JavaScript或 CSS文件。壓縮的最大好處就是降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量,從而提高客戶端瀏覽器的訪問速度。當(dāng)然,同時(shí)也會(huì)增加一點(diǎn)點(diǎn)服務(wù)器的負(fù)擔(dān)。Gzip是比較常見的 一種HTTP壓縮算法。
本文介紹的HTTP壓縮方式,采用的是Windows系統(tǒng)設(shè)置的方式,優(yōu)點(diǎn)是效率較高。
二. HTTP壓縮工作原理
Web服務(wù)器處理HTTP壓縮的工作原理如下:
Web服務(wù)器接收到瀏覽器的HTTP請求后,檢查瀏覽器是否支持HTTP壓縮;
如果瀏覽器支持HTTP壓縮,Web服務(wù)器檢查請求文件的后綴名;
如果請求文件是HTML、CSS等靜態(tài)文件,Web服務(wù)器到壓縮緩沖目錄中檢查是否已經(jīng)存在請求文件的最新壓縮文件;
如果請求文件的壓縮文件不存在,Web服務(wù)器向?yàn)g覽器返回未壓縮的請求文件,并在壓縮緩沖目錄中存放請求文件的壓縮文件;
如果請求文件的最新壓縮文件已經(jīng)存在,則直接返回請求文件的壓縮文件;
如果請求文件是ASPX等動(dòng)態(tài)文件,Web服務(wù)器動(dòng)態(tài)壓縮內(nèi)容并返回瀏覽器,壓縮內(nèi)容不存放到壓縮緩存目錄中。
小編在網(wǎng)上找過很多的資料,gzip對搜索引擎Seo不會(huì)有影響,并且Baidu也明確表示可以解析Gzip數(shù)據(jù)。
我們用站長站的工具來檢測一下Gzip以后的效果:
不過注意 GZIP一般只對 Html 之類的文本有效果,而對已經(jīng)壓縮過了的圖片如 gif,jpg 等是沒有效果的。
下載我們來一步一步教大家如何打開IIS的Gzip
1. 打開Internet信息服務(wù)(IIS)管理器,右擊“網(wǎng)站”-》“屬性”,選擇“服務(wù)”。在“HTTP壓縮”框中選中“壓縮應(yīng)用程序文件”和“壓縮靜態(tài)文件”,按需要設(shè)置“臨時(shí)目錄”和“臨時(shí)目錄的最大限制”;
2. 在Internet信息服務(wù)(IIS)管理器,右擊“Web服務(wù)擴(kuò)展”-》“增加一個(gè)新的Web服務(wù)擴(kuò)展。。.”,在“新建Web服務(wù)擴(kuò)展”框中輸入擴(kuò)展名“HTTP Compression”,添加“要求的文件”為C:WINDOWSsystem32inetsrvgzip.dll,其中Windows系統(tǒng)目錄根據(jù)您的安裝可能有所不同,選中“設(shè)置擴(kuò)展?fàn)顟B(tài)為允許”;
3. 使用文本編輯器打開C:WindowsSystem32inetsrvMetaBase.xml(建議先備份),
在打開之前請注意:
1. 在編輯MetaBase.xml前需要停止IIS,可以使用 微軟鍵+R運(yùn)行:net stop iisadmin
2. 修改完成后重啟VPS
找到Location =“/LM/W3SVC/Filters/Compression/gzip用于設(shè)置gzip壓縮,
找到Location =”/LM/W3SVC/Filters/Compression/deflate“用于設(shè)置deflate壓縮。 上面兩個(gè)節(jié)點(diǎn)緊挨著。并且設(shè)置的屬性相同。
如果需要壓縮動(dòng)態(tài)文件,則將HcDoDynamicCompression設(shè)置為”TRUE“,
并在HcScriptFileExtensions中增加您要壓縮的動(dòng)態(tài)文件后綴名,如aspx;
如果需要壓縮靜態(tài)文件,則將HcDoStaticCompression和HcDoOnDemandCompression設(shè)置為”TRUE“,
并在HcFileExtensions中增加您需要壓縮的靜態(tài)文件后綴名,如xml、css等;
HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數(shù)值在0-10, 默認(rèn)為0。
HcDynamicCompressionLevel屬性說明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 屬性說明:HcOnDemandCompLevel Metabase Property
說明: 這兩個(gè)屬性值一般推薦設(shè)置為9, 具有最佳性價(jià)比。
關(guān)鍵的配置來了:導(dǎo)致GZIP無法生效就是下面的配置網(wǎng)上沒有提到。
HcNoCompressionForHttp10="TRUE"
HcNoCompressionForProxies="TRUE"
改為
HcNoCompressionForHttp10="FALSE"
HcNoCompressionForProxies="FALSE"