zoukankan      html  css  js  c++  java
  • squid apache tomcat gzip chunked contentlength问题研究_我的记事本_百度空间

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

  • 相关阅读:
    C++中的private/protected/public
    volatile关键字和mutable关键字
    vector容器使用和assert断言关键字
    静态变量static和extern外引用
    VS开发入门常识
    电子钱包的消费——java card开发第五篇
    电子钱包的圈存——java card开发第四篇
    PPT2010制作图片玻璃磨砂效果
    Word2010制作个人名片
    Word2010制作自动目录
  • 原文地址:https://www.cnblogs.com/lexus/p/2377305.html
Copyright © 2011-2022 走看看