IIS7.5配置Gzip壓縮解決方案
2016-06-05 08:21:57
19126
GZIP概念
GZIP最早由Jean-loup Gailly和Mark Adler創(chuàng)建,用于UNIX系統(tǒng)的文件壓縮。我們?cè)贚inux中經(jīng)常會(huì)用到后綴為.gz的文件,它們就是GZIP格式的?,F(xiàn)今已經(jīng)成為Internet 上使用非常普遍的一種數(shù)據(jù)壓縮格式,或者說(shuō)一種文件格式。
HTTP協(xié)議上的GZIP編碼是一種用來(lái)改進(jìn)WEB應(yīng)用程序性能的技術(shù)。大流量的WEB站點(diǎn)常常使用GZIP壓縮技術(shù)來(lái)讓用戶感受更快的速度。這一般是指WWW服務(wù)器中安裝的一個(gè)功能,當(dāng)有人來(lái)訪問(wèn)這個(gè)服務(wù)器中的網(wǎng)站時(shí),服務(wù)器中的這個(gè)功能就將網(wǎng)頁(yè)內(nèi)容壓縮后傳輸?shù)絹?lái)訪的電腦瀏覽器中顯示出來(lái),一般對(duì)純文本內(nèi)容可壓縮到原大小的40%,這樣傳輸就快了,效果就是你點(diǎn)擊網(wǎng)址后會(huì)很快的顯示出來(lái),當(dāng)然這也會(huì)增加服務(wù)器的負(fù)載。一般服務(wù)器中都安裝有這個(gè)功能模塊的。
IIS7.5配置Gzip壓縮解決方案
開(kāi)啟配置HTTP壓縮(GZip)
在IIS7中配置Gzip壓縮相比IIS6來(lái)說(shuō)實(shí)在容易了許多,而且默認(rèn)情況下就是啟用GZip壓縮的。如果沒(méi)有,則可以在功?視圖下找到“壓縮”項(xiàng),進(jìn)入之后就會(huì)看到“靜態(tài)內(nèi)容壓縮”和“動(dòng)態(tài)內(nèi)容壓縮”兩個(gè)選項(xiàng),勾上即可。


配置啟用壓縮的文件類型及其他選項(xiàng)
當(dāng)開(kāi)啟 GZip壓縮之后,IIS并不是對(duì)所有內(nèi)容都啟用了壓縮,而是有選擇的進(jìn)行壓縮。遺憾的是,我們無(wú)法直接在IIS7管理器中配置這些壓縮選項(xiàng)。我們首先需要在C:/Windows/System32/inetsrv/config文件夾下找到applicationhost.config文件,打開(kāi)之后找到如下一節(jié)內(nèi)容:
<httpCompression directory="%SystemDrive%/inetpub/temp/IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%/system32/inetsrv/gzip.dll" />
<dynamicTypes>

</dynamicTypes>
<staticTypes>

</staticTypes>
</httpCompression>
我們可以看到,IIS實(shí)際上是根據(jù)MIME類型來(lái)決定是否啟用HTTP壓縮的,以?壓縮比之類的選項(xiàng)??梢钥闯?,圖片默認(rèn)情況下是不被壓縮的,這是因?yàn)?strong>圖片的壓縮比太低了。
我們注意到,對(duì)于Javascript來(lái)說(shuō),上面對(duì)不同的mime類型配置了不同的壓縮方式。 Javascript有三種常見(jiàn)的Mime類型,text/javascript,application/x- javascript,application/javascript。這三種類型都是合法的,在現(xiàn)代瀏覽器中也不存在什么差別。但是由于IIS7中Js文件的mime類型默認(rèn)被設(shè)置為application/x-javascript,也就是說(shuō)對(duì)于js文件,使用的是動(dòng)態(tài)內(nèi)容壓縮而不是靜態(tài)內(nèi)容壓縮,因此會(huì)導(dǎo)致js文件有時(shí)經(jīng)過(guò)壓縮的,有時(shí)卻沒(méi)有壓縮。

由于js文件通常穩(wěn)定之后不會(huì)再被修改了,因此建議改成靜態(tài)壓縮——即把 dynamicTypes這一節(jié)中的application/x-javascript挪到靜態(tài)壓縮節(jié)中。這樣保證每次腳本都是被壓縮過(guò)返回的。
靜態(tài)壓縮及動(dòng)態(tài)壓縮的區(qū)別
IIS7中的HTTP壓縮分為“靜態(tài)內(nèi)容壓縮”和“動(dòng)態(tài)內(nèi)容壓縮”,其實(shí)這兩個(gè)名字第一次接觸很費(fèi)解。什么是動(dòng)態(tài)內(nèi)容什么又是靜態(tài)內(nèi)容?實(shí)際上,準(zhǔn)確的翻譯應(yīng)該是“靜態(tài)壓縮”和“動(dòng)態(tài)壓縮”。這兩個(gè)詞反應(yīng)了IIS的壓縮行為。對(duì)于配置在 staticTypes節(jié)中的mime類型,將會(huì)啟用靜態(tài)壓縮,也就是說(shuō),當(dāng)文件第一次被請(qǐng)求的時(shí)候,IIS會(huì)將其壓縮,然后放入臨時(shí)文件夾中,下次再有人請(qǐng)求此文件時(shí)直接從臨時(shí)文件夾中取出壓縮后的版本而不用重新執(zhí)行壓縮的過(guò)程。配置在dynamicTypes一節(jié)中的mime類型的http請(qǐng)求都將啟用動(dòng)態(tài)壓縮,即每一次請(qǐng)求,主機(jī)都會(huì)對(duì)請(qǐng)求的內(nèi)容——可能是存放在文件系統(tǒng)中的靜態(tài)文件,也可能是ISAPI返回的內(nèi)容——進(jìn)行壓縮,而不會(huì)對(duì)其進(jìn)行緩存。這個(gè)壓縮比率因主機(jī)性能不同而會(huì)有所調(diào)整,所以我們?cè)谡?qǐng)求js文件的時(shí)候才會(huì)發(fā)現(xiàn)js文件有時(shí)壓縮有時(shí)不壓縮的情況。
顯而易見(jiàn),靜態(tài)壓縮會(huì)占用一定的存儲(chǔ)空間,但是速度快,而動(dòng)態(tài)壓縮不占用存儲(chǔ)空間,但是占用CPU時(shí)間,而且壓縮比不恒定。而對(duì)于經(jīng)過(guò)ISAPI的請(qǐng)求,則不能使用靜態(tài)壓縮方式。例如對(duì)于WCF返回的內(nèi)容。
最后我們可以用站長(zhǎng)工具測(cè)試一下是否開(kāi)啟 。。。
會(huì)員登錄
賬號(hào)登錄還沒(méi)有賬號(hào)?立即注冊(cè)