squid apache tomcat gzip chunked content-length问题研究_我的记事本_百度空间

squid apache tomcat gzip chunked content-length问题研究_我的记事本_百度空间

squid apache tomcat gzip chunked content-length问题研究
2009-04-14 10:30

1、squid2.6.22支持gzip压缩缓存,可以针对vary属性缓存多份。

2、apache2可以用mod_deflate压缩,压缩其实是gzip压缩,需要添加header让squid支持根据vary头缓存,添加vary为 accept-encoding。apache根据accept-encoding选择是否gzip压缩,而不管http协议是1.1还是1.0。

3、tomcat会根据http协议是1.1和keepalive选项来进行chunked,chunked对象是outputbuffer大小不能容纳的,或者调用了out.flush()操作的。

由于以上特点,当squid和apache,tomcat三者一起用时,会有以下问题:

1、squid2.6.22发送request会强制用http1.0的,但header信息不会修改,而apache转发给tomcat不作header修改,因此tomcat会认为是http1.0,所以不会chunked,这样apache收到response之后,根据accept-encoding对内容作gzip压缩,返回squid。

2、如果修改squid源代码,改为发送http1.1协议,其实它也可以正确处理chunked内容,但是,因为squid会完全读完response才会缓存,所以只会增加其负担,而无益处。

3、只用apache和tomcat,客户端收到的是chunked之后,再gzip之后的内容,浏览器会正确解析。

综上,squid,apache,tomcat可以很好的支持静态文件gzip和动态文件gzip,因为利用squid去请求tomcat,tomcat不作chunked处理,apache会等tomcat完全返回response之后作gzip压缩,然后再返回squid。

最后,如果response或者request的内容是chunked的,一般不会有content-length字段,gzip压缩后默认也不添加content-length字段,但squid接收到gzip之后,如果加入缓存,则再次输出的时候会添加content-length字段。

posted on 2012-03-02 15:40  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/03/02/2377305.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值