這篇文章主要介紹了如何使用Gzip實作Apache伺服器來壓縮網頁檔案,以提升加載效率。
開啟Apache的gzip壓縮
要讓apache支援gzip功能,要用到deflate_Module和headers_Module。打開apache的配置檔案httpd.conf,大約在120-130行左右,找到以下兩行内容:(我測試過#LoadModule headers_module modules/mod_headers.so這個子產品即使不修改也能實作gzip壓縮服務。但很多資料都說這兩行要同時去掉注釋,不然網頁顯示不正常。)
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule headers_module modules/mod_headers.so
然後将其前面的“#”注釋删掉,表示開啟gzip壓縮功能。開啟以後還需要進行相關配置。在httpd.conf檔案的最後添加以下内容即可:
<IfModule deflate_module>
# 必須的,就像一個開關一樣,告訴apache對傳輸到浏覽器的内容進行壓縮
SetOutputFilter DEFLATE
# 壓縮級别 1-9 級别從低到高
DeflateCompressionLevel 9
</IfModule>
最少需要加上以上内容,才可以生gzip功能生效。由于沒有做其它的額外配置,是以其它相關的配置均使用Apache的預設設定。這是對所有檔案都進行了壓縮,在開發過程中可以進行按需壓縮,至于PDF 、圖檔、音樂文檔之類的這些本身都已經高度壓縮格式,重複壓縮的作用不大,反而可能會因為增加CPU的處理時間及浏覽器的渲染問題而降低性能。是以就沒必要再通過Gzip壓縮。
<IfModule mod_deflate.c>
# 告訴 apache 對傳輸到浏覽器的内容進行壓縮
SetOutputFilter DEFLATE
# 壓縮等級 9 最低是1,不建議按最大級别進行壓縮,壓縮率過高會占更多CPU資源
DeflateCompressionLevel 9
# 設定不對字尾gif,jpg,jpeg,png的圖檔檔案進行壓縮
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>
指定檔案格式進行壓縮:
<IfModule mod_deflate.c>
# 壓縮等級 9
DeflateCompressionLevel 9
# 壓縮類型 html、xml、php、css、js 裡面的檔案MIME類型可以根據自己情況添加
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
</IfModule>
注意:修改完成後要重新啟用Apache才生效