免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7640 | 回复: 6

[proxy] 关于squid对gzip压缩的支持(支持nginx,IIS,apache) [复制链接]

论坛徽章:
0
发表于 2009-05-13 17:21 |显示全部楼层
背景介绍:

通常Web服务器都会通过gzip压缩来减少用户下载的流量,提高页面打开速度。

gzip压缩分为两种,http1.0压缩和http1.1压缩,这两种压缩的压缩方法和response header都一样,只是客户端和服务器通讯的http协议不同。

Squid2.7之前,是不支持http1.1的。在2.7版本开始,有限支持http1.1。从3.0版本开始,才完整的支持http1.1。但是因为squid3是完全重构的,很多2.7的功能并没有加到3.0当中,所以squid3并没有被大规模的应用在生产系统中,基本上都还是使用 squid2.6或2.7来进行内容加速,所以需要搞定Squid支持各种Web服务器的HTTP1.0 GZIP压缩。

具体配置:

1, 配置Web服务器,支持HTTP1.0压缩

    Apache, 默认就支持http1.0压缩,不需要特定配置

    IIS, 通过修改MetaBase.xml第三段IIsCompressionSchemes中的

    * HcNoCompressionForHttp10="TRUE"
    * HcNoCompressionForProxies="TRUE"
    * HcNoCompressionForRange="FALSE"

    将HcNoCompressionForHttp10="TRUE" 修改为FALSE

    Nginx, 修改nginx.conf中的gzip_version配置项,修改为gzip_version http1.0;

    配置后,再发http1.0的压缩请求到nginx,就能够获得压缩后的内容。

2, 配置Squid,支持对http1.0压缩内容的缓存

    首先,将cache_vary设置成on。使squid能够缓存带有vary头的内容

    然后,将broken_vary_encoding设置成all。squid.conf.default中,这个参数的示例是

    acl apache rep_header Server ^Apache
    broken_vary_encoding allow apache

这个挺有趣,我理解这个参数应该是很早加入的,那时候web服务器还是apache一家的天下。所以作者直接就写了一个allow apache,并一直沿用至今。

这个参数是针对那些压缩前和压缩后etag完全一致的web服务器,让squid通过vary头来区分压缩和未压缩的内容。事实上,现在 apache已经不需要通过broken_vary_encoding来区分vary头了。Apache会修改经过压缩的内容的etag头, 在原来的etag后面加上-gzip。用来区分压缩和非压缩内容。而其他的web服务器都没有这样的功能。都需要通过配置 broken_vary_encoding来支持。

通过配置上面两个参数,你就可以配置squid正确的缓存Apache,IIS,Nginx输出的压缩内容。

上面介绍的方法,已经经过实际环境的验证并稳定运行了近一年,没有出现过压缩缓存失效的情况。

原文链接: http://zys.8800.org/index.php/archives/282

论坛徽章:
0
发表于 2009-05-13 20:46 |显示全部楼层
* HcNoCompressionForRange="FALSE"
有没有有什么后裔症?会不会影响效率等?

论坛徽章:
0
发表于 2009-05-13 23:34 |显示全部楼层
原帖由 网络 于 2009-5-13 20:46 发表
* HcNoCompressionForRange="FALSE"
有没有有什么后裔症?会不会影响效率等?


不会啊。对于现在的服务器配置来说,gzip都不会对服务器造成实际的性能影响。

论坛徽章:
0
发表于 2009-05-21 13:13 |显示全部楼层
lighttpd有没有测过

论坛徽章:
0
发表于 2009-06-04 09:03 |显示全部楼层
broken_vary_encoding
Not yet ported from 2.6

该参数没有从2.6移植出来,莫非3.0不支持压缩了 ?

论坛徽章:
0
发表于 2009-06-04 19:50 |显示全部楼层
有好多都禁用etag的,还是要通过Vary头部来区分的

论坛徽章:
0
发表于 2011-09-20 14:44 |显示全部楼层
很有帮助,非常感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP