gzip原本是檔案壓縮格式,副檔名為.gz,HTTP協議用它來改進WEB應用程式效能,加快HTTP請求返回內容的下載速度,增加使用者體驗,降低網路頻寬佔用
apache內建有mod_deflate模組來啟用gzip功能,但假如安裝apache的時候沒有編譯相關模組,就需要你手動安裝一次,以啟用它:
首先到你的apache源碼目錄,尋找到mod_deflate.c檔案
Mac及Linux下都可用locate mod_deflate.c
通常位置:apachehttpd源碼目錄/modules/filters/mod_deflate.c
進入上面找到的目錄運行下面的命令:
/usr/local/apache/bin/apxs -i -c -a mod_deflate.c
註:apxs目錄請參照您自己的機器,通常在apache安裝目錄的bin目錄下
安裝完成,到apache的modules目錄看看是不是有了mod_deflates.so,如果有了這個檔案,請編輯apache安裝目錄的conf/httpd.conf設定檔:
LoadModule deflate_module modules/mod_deflate.so
載入mod_deflate.so模組
在httpd.conf裡面的網站配置裡增加如下內容:
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
第一行代表對什麼樣的內容啟用GZIP壓縮,第二行代表壓縮層級,第三行代表啟用deflate模組對本網站的輸出進行GZIP壓縮(就是對所有輸出啟用壓縮)
OK,完成拉,重啟apache httpd後可以尋找一些gzip檢測網站進行一下效果,通常壓縮率都超過%50,可以有效增加訪問速度及網站頻寬利用率,Good Luck!
可能碰到的問題:
問題:apache啟動後問題,日誌裡出現mod_deflate.so:undefined symbol:inflateEnd
解決:在LoadModule deflate_module modules/mod_deflate.so之前增加LoadFile /usr/local/lib/libz.so或LoadFile /usr/lib/libz.so
註:具體libz.so位置自己找一下
mod_deflate是Apache2中的標準過濾器模組,該模組的功能與mod_gzip的功能一樣:壓縮網頁各類組件,加快網頁下載速度。
通常Apache2中增加增加模組都不需要重新編譯Apache,只需要動態添加需要的模組就OK了。首先在Apache源安裝資料夾的modules檔案夾中尋找到mod_deflate.c檔案……
在Apache2.2.2中,mod_deflate模組在modules/filters檔案夾中,確定位置後:
| 代碼如下 |
複製代碼 |
|
[root@localhost modules]# cd /apache-source-install-path/modules/filters
[root@localhost filters]# /apache-installed-path/bin/apxs -i -a -c mod_deflate.c
如果安裝成功,則會提示:
chmod 755 /apache-installed-path/modules/mod_deflate.so
[activating module `deflate' in /apache-installed-path/conf/httpd.conf] |
此時,開啟/apache-installed-path/conf/httpd.conf檔案,搜尋“mod_deflate”,因該可以看到該模組已經載入上了,如下:
LoadModule deflate_module modules/mod_deflate.so
既然模組載入上了,那麼就可以對需要的內容進行壓縮設定了。apache官方有詳細的mod_deflate配置說明,以下是我對測試網站做的mod_deflate配置:
| 代碼如下 |
複製代碼 |
|
<IfModule mod_deflate.c>
DeflateCompressionLevel 9 #壓縮的層級設定為最高
#將html、文本、xml、php進行壓縮
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
# 將html、htm、xml、php、css、js進行壓縮
AddOutputFilter DEFLATE html htm xml php css js
</IfModule> |
apache2增加mod_deflate壓縮模組這樣就OK了。當然啦,對httpd.conf做了以上修改,應該儲存檔案並且重啟apache服務。這個時候再通過一些http觀察軟體查看頁面到底有沒有進行壓縮。以下是我對西北大學測試網站啟用mod_deflate進行壓縮後的效果截圖:
mod_deflate壓縮結果
通過實驗證明,啟用Apache的mod_deflate模組進行網頁內容壓縮,能夠平均將網頁大小降到原來的60%左右。尤其是對非圖片、非多媒體為主的網站效果更加明顯