遷入阿里雲后,有了更優質的帶寬線路,一等價錢一等貨,帶寬成本更高了。節約帶寬也就成為了重點要考慮的問題。
節約帶寬首要的措施就是對除圖片之外的所有內容進行壓縮,遷移阿里雲之前也是這么做的,但沒現在這么重視。
今天發現博客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>
參考: