天天看點

Apache httpd 2.4.27開啟GZIP壓縮功能

轉載自素文宅部落格:https://blog.yoodb.com/yoodb/article/detail/1373

HTTP協定上的GZIP編碼是一種用來改進WEB應用程式性能的檔案壓縮算法,現在的應用十分廣泛,尤其是在Linux平台。當應用Gzip壓縮到一個純文字檔案時,效果是非常明顯的,大約可以減少40%以上的檔案大小。利用Apache中的Gzip子產品,可以使用Gzip壓縮算法來對Apache伺服器釋出的網頁内容進行壓縮後再傳輸到用戶端浏覽器。這樣經過壓縮後實際上降低了網絡傳輸的位元組數,最明顯的好處就是可以加快網頁加載的速度。

減少檔案大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸檔案時,可以減少傳輸的時間。gzip是在Linux系統中經常使用的一個對檔案進行壓縮和解壓縮的指令,既友善又好用。

目前Apache httpd最新版本Apache httpd 2.4.27,官網http://httpd.apache.org/

GZip壓縮的基本流程如下:

1. Web伺服器接收到浏覽器的HTTP請求後,檢查浏覽器是否支援HTTP壓縮(Accept-Encoding 資訊);

2. 如果浏覽器支援HTTP壓縮,Web伺服器檢查請求檔案的字尾名;

3. 如果請求檔案是HTML、CSS等靜态檔案,Web伺服器到壓縮緩沖目錄中檢查是否已經存在請求檔案的最新壓縮檔案;

4. 如果請求檔案的壓縮檔案不存在,Web伺服器向浏覽器傳回未壓縮的請求檔案,并在壓縮緩沖目錄中存放請求檔案的壓縮檔案;

5. 如果請求檔案的最新壓縮檔案已經存在,則直接傳回請求檔案的壓縮檔案;

6. 如果請求檔案是動态檔案,Web伺服器動态壓縮内容并傳回浏覽器,壓縮内容不存放到壓縮緩存目錄中。

開啟GZIP步驟

1. 編輯 http.conf 檔案

LoadModule headers_module modules/mod_headers.so

LoadModule deflate_module modules/mod_deflate.so

LoadModule filter_module modules/mod_filter.so

如果前面有#删除即可(“#”注釋掉的内容),沒有上述配置的話在最後增加上去,注意開啟gzip壓縮會消耗額外cpu資源。

  1. 檔案末尾加上

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json #對指定的内容進行壓縮,壓縮方式為預設

其他配置說明:

DeflateCompressionLevel 6

SetOutputFilter DEFLATE #壓縮所有檔案

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json

SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)no-gzip dont-vary #設定不對字尾gif,jpg,jpeg,png的圖檔檔案進行壓縮  

SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar) no-gzip dont-vary #設定不對exe,tgz,gz。。。的檔案進行壓縮

SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary

AddOutputFilterByType DEFLATE text/* #設定對檔案是文本的内容進行壓縮,例如text/html text/css text/plain等

AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #對javascript檔案進行壓縮

AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #告訴apache對php類型的檔案進行壓縮

BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些問題,隻壓縮檔案類型是text/html

BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多的問題,不開啟壓縮

BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE浏覽器會僞裝成 Netscape

  1. 重新開機apache服務,執行service httpd restart指令。

浏覽器支援接受相應的gzip壓縮:

Accept-Encoding: gzip 支援mod_gzip

Accept-Encoding: deflate 支援mod_deflate

Accept-Encoding: gzip,deflate

同時支援mod_gzip 和mod_deflate Apache内置有mod_deflate子產品來啟用gzip功能。

mod_gzip 和mod_deflate的主要差別是什麼?(網絡資料)

首先一個差別是安裝它們的Apache Web伺服器版本的差異。Apache 1.x系列沒有内建網頁壓縮技術,是以才去用額外的第三方mod_gzip 子產品來執行壓縮。而Apache 2.x官方在開發的時候,就把網頁壓縮考慮進去,内建了mod_deflate 這個子產品,用以取代mod_gzip。雖然兩者都是使用的Gzip壓縮算法,它們的運作原理是類似的。 第二個差別是壓縮品質。mod_deflate 壓縮速度略快而mod_gzip 的壓縮比略高。一般預設情況下,mod_gzip 會比mod_deflate 多出4%~6%的壓縮量。 那麼,為什麼使用mod_deflate?第三個差別是對伺服器資源的占用。 一般來說mod_gzip 對伺服器CPU的占用要高一些。mod_deflate 是專門為確定伺服器的性能而使用的一個壓縮子產品,mod_deflate 需要較少的資源來壓縮檔案。這意味着在高流量的伺服器,使用mod_deflate 可能會比mod_gzip 加載速度更快。

繼續閱讀