為什麼要開啟 gzip ?
站群伺服器開啟 gzip 壓縮會大大的提高網站訪問速度,帶來良好的使用者體驗,而且降低網站流量,這些好處是顯而易見的。下圖是本站首頁開啟 gzip 後的情況:WordPress 網頁大小由 81.7k 壓縮到 13.9k,receiving 接收資料只要 21 毫秒就完成了。
 
當然 gzip 並不是百利而無一害。首先站群伺服器壓縮 WordPress 網頁資料會佔用一定的站群伺服器資源,另外如果 gzip 壓縮得太厲害(壓縮等級太高)可能會讓舊版的 IE 系列無法正常開啟 WordPress 網頁。不過現在站群伺服器一般效能都不會有太大問題,所以開啟 gzip 利大於弊。
 
怎樣知道站群伺服器是否啟用了 gzip 壓縮呢?很簡單,開啟 firebug,看 network 選項卡,看是否有 Content-Encoding : gzip 項,有則表示已開啟。 chrome 自帶的除錯工具(F12)也能看到。最簡單地是去 chinaz(http://tool.chinaz.com/Gzips/)去看網站資料。
怎樣開啟 gzip 壓縮?
 
 
以 CentOS 為例,開啟 Apache 的 httpd.conf 檔案:
# vim /etc/httpd/conf/httpd.conf
 
搜尋是否有這兩行:
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
 
沒有請加上,並確保 /etc/httpd/modules 目錄存在 mod_deflate.so 檔案。 mod_deflate 是壓縮模組,就是對要傳輸到客戶端的程式碼進行 gzip 壓縮;mod_headers 模組的作用是告訴瀏覽器頁面使用了 gzip 壓縮,如果不開啟 mod_headers 那麼瀏覽器就會對 gzip 壓縮過的頁面進行下載,而無法正常顯示。
 
如果沒問題,在 httpd.conf 最後加上:

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE text/html

 
儲存並關閉檔案。重啟 Apache 即可:service httpd restart 。
其它寫法

#必須的,就像一個開關一樣,告訴 apache 對傳輸到瀏覽器的內容進行壓縮
 
SetOutputFilter DEFLATE
#設定不對字尾 gif,jpg,jpeg,png 的圖片檔案進行壓縮
 
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
 
#同上,就是設定不對 exe,tgz,gz 。。。的檔案進行壓縮
 
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
 
#設定對檔案是文字的內容進行壓縮,例如 text/html  text/css  text/plain 等
 
AddOutputFilterByType DEFLATE text/*
 
#這段程式碼你只需要瞭解 application/javascript application/x-javascript 這段就可以了,這段的意思是對 javascript 檔案進行壓縮
 
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
 
#這段是告訴 apache 對 php 型別的檔案進行壓縮
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
 
# Netscape 4.x 有一些問題,所以只壓縮檔案型別是 text/html 的
 
BrowserMatch ^Mozilla/4 gzip-only-text/html
 
# Netscape 4.06-4.08 有更多的問題,所以不開啟壓縮
 
BrowserMatch ^Mozilla/4.0[678] no-gzip
 
# IE 瀏覽器會偽裝成 Netscape ,但是事實上它沒有問題
 
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

 
配置到這裡 apache 中的 gzip 壓縮就配置完成,重啟 apache 後,新的配置就會生效。不過開啟 gzip 功能需要額外 CPU 資源開銷。
 
另外題外話:圖片沒必要開啟 gzip 壓縮!
 
使用經由壓縮過的圖片作為 WordPress 網頁背景,cpu 飆高,頁面假死嚴重(ie6)
所有的 gif 或 png 等圖片這些格式都是經過壓縮過後的,對於這些檔案進行壓縮只是增加站群伺服器負擔而已。
 
對於圖片最佳化的話可以使用 ImageOptimizer 來進行壓縮,前提你的站群伺服器足夠強大那你可以忽略了。