IIS7設(shè)置Gzip壓縮
發(fā)表時(shí)間:2023-04-03 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:16
[摘要]開(kāi)啟配置HTTP壓縮(GZip)在IIS7中配置Gzip壓縮相比IIS6來(lái)說(shuō)實(shí)在容易了許多, 而且默認(rèn)情況下就是啟用GZip壓縮的。 如果沒(méi)有, 則可以再功能視圖下找到“壓縮&...
開(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), 勾上即可。


配置啟用壓縮的文件類(lèi)型及其他選項(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>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</staticTypes>
</httpCompression>
|
我們可以看到, IIS實(shí)際上是根據(jù)MIME類(lèi)型來(lái)決定是否啟用HTTP壓縮的, 以及壓縮比之類(lèi)的選項(xiàng)。 可以看出, 圖片默認(rèn)情況下是不被壓縮的, 這是因?yàn)閳D片的壓縮比太低了。
我們注意到, 對(duì)于Javascript來(lái)說(shuō), 上面對(duì)不同的mime類(lèi)型配置了不同的壓縮方式。 Javascript有三種常見(jiàn)的Mime類(lèi)型, text/javascript, application/x-javascript, application/javascript。 這三種類(lèi)型都是合法的, 在現(xiàn)代瀏覽器中也不存在什么差別。 但是由于IIS7中Js文件的mime類(lèi)型默認(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類(lèi)型, 將會(huì)啟用靜態(tài)壓縮, 也就是說(shuō), 當(dāng)文件第一次被請(qǐng)求的時(shí)候, IIS會(huì)將其壓縮, 然后放入臨時(shí)文件夾中, 下次再有人請(qǐng)求此文件時(shí)直接從臨時(shí)文件夾中取出壓縮后的版本而不用重新執(zhí)行壓縮的過(guò)程。 配置在dynamicTypes一節(jié)中的mime類(lèi)型的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)容。
網(wǎng)站建設(shè)是一個(gè)廣義的術(shù)語(yǔ),涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護(hù)的網(wǎng)站。