天天看點

開啟Apache的gzip壓縮

這篇文章主要介紹了如何使用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才生效