IIS7設(shè)置Gzip壓縮
發(fā)表時間:2023-04-03 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]開啟配置HTTP壓縮(GZip)在IIS7中配置Gzip壓縮相比IIS6來說實在容易了許多, 而且默認情況下就是啟用GZip壓縮的。 如果沒有, 則可以再功能視圖下找到“壓縮&...
開啟配置HTTP壓縮(GZip)
在IIS7中配置Gzip壓縮相比IIS6來說實在容易了許多, 而且默認情況下就是啟用GZip壓縮的。 如果沒有, 則可以再功能視圖下找到“壓縮”項, 進入之后就會看到“靜態(tài)內(nèi)容壓縮”和“動態(tài)內(nèi)容壓縮”兩個選項, 勾上即可。
配置啟用壓縮的文件類型及其他選項
當(dāng)開啟GZip壓縮之后, IIS并不是對所有內(nèi)容都啟用了壓縮, 而是有選擇的進行壓縮。 遺憾的是, 我們無法直接在IIS7管理器中配置這些壓縮選項。 我們首先需要在C:\Windows\System32\inetsrv\config文件夾下找到applicationhost.config文件, 打開之后找到如下一節(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實際上是根據(jù)MIME類型來決定是否啟用HTTP壓縮的, 以及壓縮比之類的選項。 可以看出, 圖片默認情況下是不被壓縮的, 這是因為圖片的壓縮比太低了。
我們注意到, 對于Javascript來說, 上面對不同的mime類型配置了不同的壓縮方式。 Javascript有三種常見的Mime類型, text/javascript, application/x-javascript, application/javascript。 這三種類型都是合法的, 在現(xiàn)代瀏覽器中也不存在什么差別。 但是由于IIS7中Js文件的mime類型默認被設(shè)置為application/x-javascript, 也就是說對于js文件, 使用的是動態(tài)內(nèi)容壓縮而不是靜態(tài)內(nèi)容壓縮, 因此會導(dǎo)致js文件有時經(jīng)過壓縮的, 有時卻沒有壓縮。
由于js文件通常穩(wěn)定之后不會再被修改了, 因此建議改成靜態(tài)壓縮——即把dynamicTypes這一節(jié)中的application/x-javascript挪到靜態(tài)壓縮節(jié)中。 這樣保證每次腳本都是被壓縮過返回的。
靜態(tài)壓縮及動態(tài)壓縮的區(qū)別
IIS7中的HTTP壓縮分為“靜態(tài)內(nèi)容壓縮”和“動態(tài)內(nèi)容壓縮”, 其實這兩個名字第一次接觸很費解。 什么是動態(tài)內(nèi)容什么又是靜態(tài)內(nèi)容?實際上, 準確的翻譯應(yīng)該是“靜態(tài)壓縮”和“動態(tài)壓縮”。 這兩個詞反應(yīng)了IIS的壓縮行為。 對于配置在staticTypes節(jié)中的mime類型, 將會啟用靜態(tài)壓縮, 也就是說, 當(dāng)文件第一次被請求的時候, IIS會將其壓縮, 然后放入臨時文件夾中, 下次再有人請求此文件時直接從臨時文件夾中取出壓縮后的版本而不用重新執(zhí)行壓縮的過程。 配置在dynamicTypes一節(jié)中的mime類型的http請求都將啟用動態(tài)壓縮, 即每一次請求, 主機都會對請求的內(nèi)容——可能是存放在文件系統(tǒng)中的靜態(tài)文件, 也可能是ISAPI返回的內(nèi)容——進行壓縮, 而不會對其進行緩存。 這個壓縮比率因主機性能不同而會有所調(diào)整, 所以我們在請求js文件的時候才會發(fā)現(xiàn)js文件有時壓縮有時不壓縮的情況。
顯而易見, 靜態(tài)壓縮會占用一定的存儲空間, 但是速度快, 而動態(tài)壓縮不占用存儲空間, 但是占用CPU時間, 而且壓縮比不恒定。 而對于經(jīng)過ISAPI的請求, 則不能使用靜態(tài)壓縮方式。 例如對于WCF返回的內(nèi)容。
網(wǎng)站建設(shè)是一個廣義的術(shù)語,涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護的網(wǎng)站。