遷入阿里雲后:解決了一個IIS動態內容壓縮的問題


遷入阿里雲后,有了更優質的帶寬線路,一等價錢一等貨,帶寬成本更高了。節約帶寬也就成為了重點要考慮的問題。

節約帶寬首要的措施就是對除圖片之外的所有內容進行壓縮,遷移阿里雲之前也是這么做的,但沒現在這么重視。

今天發現博客RSS站點占用帶寬很高,檢查后發現返回給瀏覽器的響應內容竟然沒被壓縮。由於博客園RSS是全文輸出,本來就是耗帶寬大戶,現在內容不壓縮,可以稱得上是耗帶寬釘子戶了。

【插播】如何知道一個網站是否對響應內容進行了壓縮?在Firefox的Firebug中查看,如果Response Headers中有Content-Encoding:gzip或Content-Encoding:deflate ,就說明壓縮了。見下圖:

這個問題不是因為我們疏忽,忘了在IIS中啟用這個站點的動態內容壓縮(Http Dynamic Compression),而是另有原因。

IIS的動態內容壓縮是基於MIME類型的,在IIS的默認設置(applicationHost.config)中,定義了一些mimeType,只有響應內容的Content Type與mimeType匹配時,IIS才會對之進行壓縮。

如上圖所示,我們的RSS的Content-Type是text/html; charset=utf-8,這個mimeType在IIS的默認設置中沒有定義,所以沒有被壓縮。只需加個這個Content Type就能解決問題。

操作方法如下:

1. 在IIS中選中根節點,點擊右側的Configuration Editor

2. 在Section中選擇httpCompression

3. 找到dynamicTypes,點擊右側的省略號按鈕

4. 在打開的窗口中添加相應的mimeType,我們這里是text/html; charset=utf-8

 

5. 添加之后,關閉當前窗口,回到第3步中的窗口,然后點擊Apply

6. 在命令行中輸入iisreset命令重啟IIS,使設置生效。

applicationHost.config中的對應配置如下:

<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" />
        <add mimeType="application/xml; charset=utf-8" enabled="true" />
    </dynamicTypes>
    <staticTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/x-javascript" enabled="true" />
        <add mimeType="application/atom+xml" enabled="true" />
        <add mimeType="application/xaml+xml" enabled="true" />
        <add mimeType="*/*" enabled="false" />
    </staticTypes>
</httpCompression>

參考:

Enabling dynamic compression (gzip, deflate) for WCF Data Feeds, OData and other custom services in IIS7


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM