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

本文详细探讨了Squid、Apache、Tomcat在gzip压缩与chunked内容处理上的合作机制及可能出现的问题。重点分析了如何在不同HTTP协议版本下实现高效内容压缩与传输,特别关注了gzip压缩与chunked对象的交互过程,以及在使用这些技术时可能遇到的挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值