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 加載速度更快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章