Gzip在apache2中的设置和squid对它的处理
程序员文章站
2023-12-24 21:43:33
如果要开启gzip的话,一定要打开下面二个模块. 复制代码 代码如下: loadmodule headers_module modules/mod_headers.so l...
如果要开启gzip的话,一定要打开下面二个模块.
loadmodule headers_module modules/mod_headers.so
loadmodule deflate_module modules/mod_deflate.so
设置压缩比率,取值范围在 1(最低) 到 9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的cpu资源.
deflatecompressionlevel 3
addoutputfilter deflate html xml php js css
<location />
setoutputfilter deflate
browsermatch ^mozilla/4 gzip-only-text/html
browsermatch ^mozilla/4\.0[678] no-gzip
browsermatch \bmsie !no-gzip !gzip-only-text/html
setenvifnocase request_uri \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
setenvifnocase request_uri .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
setenvifnocase request_uri .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
header append vary user-agent env=!dont-vary #对代理的设置
</location>
复制代码 代码如下:
loadmodule headers_module modules/mod_headers.so
loadmodule deflate_module modules/mod_deflate.so
设置压缩比率,取值范围在 1(最低) 到 9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的cpu资源.
复制代码 代码如下:
deflatecompressionlevel 3
addoutputfilter deflate html xml php js css
<location />
setoutputfilter deflate
browsermatch ^mozilla/4 gzip-only-text/html
browsermatch ^mozilla/4\.0[678] no-gzip
browsermatch \bmsie !no-gzip !gzip-only-text/html
setenvifnocase request_uri \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
setenvifnocase request_uri .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
setenvifnocase request_uri .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
header append vary user-agent env=!dont-vary #对代理的设置
</location>
下面二个测试网站
测试数据对css
original size: 44 kb
gzipped size: 10 kb
data savings: 77.27%
测试数据js
original size: 6 kb
gzipped size: 2 kb
data savings: 66.67%
测试数据php
original size: 62 kb
gzipped size: 15 kb
data savings: 75.81%
上面只是随机拿的几个数据,看的出来,使用了gzip压缩后文件小多了.
另外讲一下,有关squid对gzip的处理
在squid中,对同一个url只保留一份缓存。对于如果不同browser(是否支持压缩)如果频繁交替访问,例如:对某个cache住的目标,一个http/1.0请求可能会导致squid强制更新其缓存。但接下来的另一个http/1.1请求又会导致squid再次更新缓存。这样那squid缓存数据就要频繁更新,这就极大的降低了cache命中率。
不过还好,现实环境中不支持压缩的browser毕竟是很少的情况,所以对于缓存命中率的降低很有限.