Apache2 使用 mod_gzip 增進傳輸效能

要加快網頁傳輸的速度,一個方法是增加網路的頻寬,另一個方法是降低資料量,這是大家都知道的道理. HTTP 通訊協定基本上就是 server 接受 client 的 request (GET) 然後送出被要求的資料,如果 server 端可以送出一份壓縮過的資料而可以被 client 端接受,那麼雖然是傳送相同的資料,但是經過壓縮就可以有效的降低資料量.

本站使用 Win32 的 Apache 2.0.54,如果想要達成上面講的機制,要另加一個 gzip 的模組 mod_gzip,這裡可以下載 mod_gzip 預先編譯好的版本 mod_gzip-2.0.53-w32.zip,用在 Apache 2.0.54 沒問題. 用法如下:

在 httpd.conf 加上
LoadModule gzip_module modules/mod_gzip.so


mod_gzip_on Yes
mod_gzip_compression_level 9
mod_gzip_item_include file \.css$
mod_gzip_item_include file \.js$
mod_gzip_item_include mime text/.*

其中 mod_gzip_compression_level 9 是最高壓縮,mod_gzip_item_include 是設定什麼樣的資料檔要壓縮,上例中 *.css 及 *.js 會被壓縮傳送. 圖檔如 .jpg, .png,或音樂 .mp3 等,則不宜再壓縮,因為檔案本身就已經是壓縮過的.

修改完後要 restart Apache. Apache 如果接到 browser 送來的 Accept-Encoding 含有 gzip 就會以 gzip 壓縮再傳送(Accept-Encoding: gzip,deflate ),現在新的 browser 都已經支援. 如果 browser 沒有送來支援的訊息,server 端就會以不壓縮的原資料傳送.

實驗結果,本來 style.css 這個檔是 12911 bytes,壓縮傳送是 3342 bytes,省了近 10k 的傳輸量,意謂者使用者等待的時間縮短了.

Apache2 官方包裝內含有 mod_deflate,是一樣的功能,不過壓縮能力比 mod_gzip 差一點,用法不一樣.

(Visited 11,912 times, 1 visits today)

在〈Apache2 使用 mod_gzip 增進傳輸效能〉中有 2 則留言

發佈回覆給「..................................」的留言 取消回覆