Gzip是一種流行的檔案壓縮算法,現在的應用十分廣泛,尤其是在Linux平台。Gzip在現代浏覽器中預設都是支援的,當一個純文字檔案使用Gzip壓縮可以減少70%以上的檔案大小,壓縮後可以大大降低了網絡傳輸的位元組數,使用Gzip的好處就是可以加快網頁加載的速度,同時是你的網站對搜尋引擎更加友好。下面PHP程式員雷雪松詳細的講解下Apache如何使用mod_deflate子產品來實作Gzip壓縮網頁内容進行壓縮。
Apache伺服器HTTP請求Gzip處理的過程
1、Apache伺服器接收到浏覽器的HTTP請求後,檢查浏覽器是否支援HTTP壓縮(Accept-Encoding 資訊)。
2、如果浏覽器支援HTTP壓縮,Apache伺服器檢查請求檔案的字尾名。
a、如果請求檔案是HTML、CSS、JS、Images等靜态檔案,Apache伺服器從壓縮緩沖目錄中檢查是否已經存在請求檔案的最新壓縮檔案,如果不存在,傳回壓縮的請求檔案,并在壓縮緩沖目錄中存放壓縮檔案,如果已經存在,則直接傳回請求檔案的壓縮檔案。
b、如果請求檔案是動态檔案,Web伺服器動态壓縮内容并傳回浏覽器,壓縮内容不存放到壓縮緩存目錄中。
Apache支援GZIP壓縮的配置
1、編輯 http.conf 檔案,開啟mod_deflate子產品
去掉 #LoadModule headers_module modules/mod_headers.so 前面的注釋#
去掉 #LoadModule deflate_module modules/mod_deflate.so 前面的注釋#
去掉 #LoadModule filter_module modules/mod_filter.so 前面的注釋#
2、配置Gzip壓縮相關參數
#壓縮率,6是建議值。
DeflateCompressionLevel 6
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/php
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/java
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-java
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/gif image/png image/jpe image/swf image/jpeg image/bmp
#排除不需要壓縮的檔案
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI .(?:html|htm)$ no-gzip dont-varySetEnvIfNoCase
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary
3、重新開機Apache伺服器并且使用浏覽器請求驗證是否Gzip生效。
