Enable GZIP Compression in Apache

編輯http.conf

1
vim /etc/httpd/conf/httpd.conf

檢查是否有載入以下模組

1
2
3
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule filter_module modules/mod_filter.so

編輯deflate.conf

這個檔案預設應該是沒有,所以直接建立檔案

1
vim /etc/httpd/conf.d/deflate.conf

複製貼上以下內容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Set to gzip all output 
SetOutputFilter DEFLATE
#AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php

#exclude the following file types
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|iso|tar|bz2|sit|rar|png|jpg|gif|jpeg|flv|swf|mp3)$ no-gzip dont-vary

#set compression level
DeflateCompressionLevel 6

#Handle browser specific compression requirements
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

說明:
SetOutputFilter DEFLATE這行會把所有要輸出的檔案都壓縮,
相反的你可以用AddOutputFilterByType DEFLATE後面加上指定的 MIME 類型的檔案,來指定只壓縮某些類型的檔案(這裡註解掉不使用)。

因為我們指定所有輸出的檔案都要壓縮,但其實有些檔案執行壓縮的效率不高,所以要排除,避免耗用太多 CPU,使用SetEnvIfNoCase Request_URI來把這些類型的檔案排除。

接著設定壓縮等級,等級從 1 到 9 級,數字越高,壓縮率越高,但 CPU 耗用的也越大,可以自行調整,預設是 6,不建議設太高,除非你伺服器的 CPU 閒閒沒事做。最後就是針對瀏覽器做個別調整。

重啟Apache Server

1
service httpd restart