• 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#中Excel的导入和导出的几种基本方式
    关于XML与类型Class的映射
    关于模板的相关注意事项
    OGRE 2.1 Windows 编译
    R6010 -abort() has been called
    VS2012 编译 Assimp
    C++ 并发消息队列
    Debian 安装下载工具软件
    Oracle SQL语句追踪
    记录自己学习网址
  • 原文地址:https://www.cnblogs.com/lexus/p/2377305.html
Copyright © 2020-2023  润新知