要讓apache支持gzip功能,要用到deflate_Module和headers_Module。
打開apache的配置文件httpd.conf,大約在105行左右,找到以下兩行內容:(這兩行不是連續在一起的)
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule headers_module modules/mod_headers.so
然后將其前面的“#”注釋刪掉,表示開啟gzip壓縮功能。
開啟以后還需要進行相關配置。在httpd.conf文件的最后添加以下內容即可:
<IfModule deflate_module>
#必須的,就像一個開關一樣,告訴apache對傳輸到瀏覽器的內容進行壓縮
SetOutputFilter DEFLATE
</IfModule>
最少需要加上以上內容,才可以生gzip功能生效。由於沒有做其它的額外配置,所以其它相關的配置均使用Apache的默認設置。
注意,這里要強調一個地方,我是通過搜索引擎找到相關文章進行設置的,而這些文章可能是來回復制的,有錯誤都不知道,如果你也按照那些做法去做,八層是出錯,直接Apache都啟動不了。究其原因,主要是有個參數不匹配。在上面去掉注釋的“#”,即:
LoadModule deflate_module modules/mod_deflate.so
這里以后會用到中間的名稱,即deflate_module。后續開啟gzip壓縮中要使用該名稱,即:
<IfModule deflate_module>
......
......
</IfModule>
這兩個deflate_module必須一致。網絡上其它很多文章,都是不一致的,所以直接報錯。
下面是另一個典型配置,供參考。這里不建議將圖片視頻等多媒體文件進行gzip壓縮,一般只壓縮純文本格式的文件,如.php、.txt、.html、.css、.js等。
<IfModule deflate_module>
#必須的,就像一個開關一樣,告訴apache對傳輸到瀏覽器的內容進行壓縮
SetOutputFilter DEFLATE
#壓縮級別,1-9,9為最高
DeflateCompressionLevel 7
#不進行壓縮的文件
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
#針對代理服務器的設置
<IfModule headers_moudle>
Header append vary User-Agent
</IfModule>
</IfModule>
檢查網站是否壓縮網址:http://tool.chinaz.com/Gzips/
