網頁傳輸效率提升2 – Apache2 的 mod_deflate 壓縮

上一篇文章中,我已經提到了利用 Gzip 的技術來減小 Javascript 檔案的大小,讓檔案的傳輸可以盡早完成。
所以這些技術也都是給網站的管理者使用的。因為一般的訪客你也是動的接收資料,無法更改資料本身。

這有很多種辦法可以達成,不過同樣都會有一個缺點,就是你的伺服器須要將檔案壓縮,因此要多耗掉一點點的CPU資源。不過對於伺服器來說,這點的資源是充足的,所以不用過於擔心反而拖慢了你的程式。

全部交由 Apache 去處理,讓你輕鬆一次搞定。
以下設定為 httpd.conf 內之設定。

LoadModule deflate_module modules/mod_deflate.so

確定前面沒有 # 字號將 mod_deflate 功能註解停止。

  DeflateCompressionLevel 9
  AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
  AddOutputFilter DEFLATE css js

將這些添加到 httpd.conf 的末端。然後重新啟動你的 Apache 以更新設定。

DeflateCompressionLevel 代表壓縮的等級,由 1 到 9(壓縮率最高),預設值為 6,讓你在壓縮效果與效率中取得一個平衡點。
AddOutputFilterByType 設定你要壓縮的檔案,以檔案類型為設定方式。
AddOutputFilter 設定你要壓縮的檔案,以附檔名設定。
壓縮的檔案就以文字型態的檔案為主。圖檔(jpg, png)、聲音檔(mp3, wma),影片檔(mpeg, avi)等等的檔案,就在上傳前進行好處理。因為這些檔案通常較大,讓伺服器處理的話可能就會有 CPU 時間上的壓力。
關於 mod_deflate 的詳細資料 ,讓你更加透徹的操作這功能。

在完成之後,可以前往 Check HTTP Compression 測試一下設定是否成功。
以我管理的論壇 DC club 的首頁來看,壓縮率達到 78%,有不錯的效果。我的小玩具 http://bgo.tw 也有 76% 的效率。
基本上如果你開啟壓縮功能的話,通常可以節省 7成的流量消耗。

另外關於壓縮率的小提示!
以 Yahoo 的首頁為測試對象,為了基於同樣的網頁測試,將其存放在本機上來測試
原始大小為 310,734 bytes
壓縮率 1 => 85,241 bytes ( 72.57% )
壓縮率 6 => 72,648 bytes ( 76.62% )
壓縮率 9 => 72,407 bytes ( 76.70% )