免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3972 | 回复: 2
打印 上一主题 下一主题

[proxy] (原创) squid2.7的gzip压缩兼容性测试(lighttpd1.4.19+mod_compress) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-03 00:10 |只看该作者 |倒序浏览
squid对gzip压缩的支持一直有问题,这个周末针对几种常见的web服务器(lighty1.4, nginx0.7.19, apache2.2.10)的gzip压缩进行了兼容性测试,发现squid还是对apache的压缩支持最好。这里先贴出lighty1.4的测试步骤和结果。

软件平台:

squid-2.7.stable5

lighttpd-1.4.19+mod_compress

测试方法:

    * lighty工作在8080端口上, 打开mod_compress, 并配置mod_expires过期时间。

配置参数为

server.modules = (
        ……
        "mod_compress",
        ……
        )

compress.cache-dir = "/home/lighttpd/cache/"
compress.filetype           = ("text/plain","text/css", "text/xml", "text/javascript" )


    * squid工作在80端口上,并配置squid代理localhost的8080端口。

这里贴出squid.conf的主要参数:

http_port 80 vhost vport
icp_port 0

#########cache##############

cache_mem 200 MB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LRU
cache_dir aufs /home/squid/var/cache 2669 16 256
maximum_object_size 10240 KB
maximum_object_size_in_memory 3072 KB
memory_pools on
memory_pools_limit 100 MB

cache_swap_high 98%
cache_swap_low 90%
cache_swap_log /home/squid/var/logs/swap.state

redirect_rewrites_host_header on
cache_vary on
forwarded_for on
allow_underscore on
tcp_recv_bufsize 65535 bytes
strip_query_terms off

range_offset_limit -1
reload_into_ims on

#########timeouts#############

。。。。。。
#########log##################

。。。。。。

##########acl###################
。。。。。。

##############cache_peer##############

。。。。。。
cache_peer localhost parent 8080 0 no-query no-digest originserver
http_access allow localhost
cache_peer_access localhost allow localhost
cache_peer_access localhost deny all

。。。。。。


    * 然后在lighty的documentroot目录下放一个静态的xml文件flv.xml。
    * 申请未压缩版本的flv.xml

wget -S http://localhost/flv.xml

返回信息为:

–23:46:02–  http://localhost/flv.xml
正在解析主机 localhost… 127.0.0.1
Connecting to localhost|127.0.0.1|:80… 已连接。
已发出 HTTP 请求,正在等待回应…
  HTTP/1.0 200 OK
  Vary: Accept-Encoding
  Expires: Mon, 03 Nov 2008 15:46:02 GMT
  Cache-Control: max-age=86400
  Content-Type: text/xml
  Accept-Ranges: bytes
  ETag: "-1733604169"
  Last-Modified: Sun, 02 Nov 2008 14:47:50 GMT
  Content-Length: 1150883
  Date: Sun, 02 Nov 2008 15:46:02 GMT
  X-Cache: MISS from localhost
  X-Cache-Lookup: MISS from localhost:80
  Connection: keep-alive
长度:1150883 (1.1M) [text/xml]

重复申请:

–23:46:28–  http://localhost/flv.xml
正在解析主机 localhost… 127.0.0.1
Connecting to localhost|127.0.0.1|:80… 已连接。
已发出 HTTP 请求,正在等待回应…
  HTTP/1.0 200 OK
  Vary: Accept-Encoding
  Expires: Mon, 03 Nov 2008 15:46:02 GMT
  Cache-Control: max-age=86400
  Content-Type: text/xml
  Accept-Ranges: bytes
  ETag: "-1733604169"
  Last-Modified: Sun, 02 Nov 2008 14:47:50 GMT
  Content-Length: 1150883
  Date: Sun, 02 Nov 2008 15:46:02 GMT
  Age: 26
  X-Cache: HIT from localhost
  X-Cache-Lookup: HIT from localhost:80
  Connection: keep-alive
长度:1150883 (1.1M) [text/xml]

X-Cache header变成 HIT,显示文件已经被squid缓存。这是未压缩版本的文件。


    *  然后申请gzip压缩版本的:

wget -S –header="Accept-Encoding:gzip,deflate" http://localhost/flv.xml

             返回信息为:

–23:46:46–  http://localhost/flv.xml
正在解析主机 localhost… 127.0.0.1
Connecting to localhost|127.0.0.1|:80… 已连接。
已发出 HTTP 请求,正在等待回应…
  HTTP/1.0 200 OK
  Vary: Accept-Encoding
  Content-Encoding: gzip
  Last-Modified: Sun, 02 Nov 2008 14:47:50 GMT
  ETag: "-1733604169"
  Content-Type: text/xml
  Expires: Mon, 03 Nov 2008 15:46:46 GMT
  Cache-Control: max-age=86400
  Accept-Ranges: bytes
  Content-Length: 206898
  Date: Sun, 02 Nov 2008 15:46:46 GMT
  X-Cache: MISS from localhost
  X-Cache-Lookup: MISS from localhost:80
  Connection: keep-alive
长度:206898 (202K) [text/xml]

返回的header显示squid正确的识别了request header中的gzip压缩申请,并且去源站申请了压缩版本的flx.xml。

重复申请,返回信息为:

正在解析主机 localhost… 127.0.0.1
Connecting to localhost|127.0.0.1|:80… 已连接。
已发出 HTTP 请求,正在等待回应…
  HTTP/1.0 200 OK
  Vary: Accept-Encoding
  Content-Encoding: gzip
  Last-Modified: Sun, 02 Nov 2008 14:47:50 GMT
  ETag: "-1733604169"
  Content-Type: text/xml
  Expires: Mon, 03 Nov 2008 15:36:10 GMT
  Cache-Control: max-age=86400
  Accept-Ranges: bytes
  Content-Length: 206898
  Date: Sun, 02 Nov 2008 15:36:10 GMT
  Age: 10
  X-Cache: HIT from localhost
  X-Cache-Lookup: HIT from localhost:80
  Connection: keep-alive
长度:206898 (202K) [text/xml]

显示flv.xml已经被squid正确的缓存。到目前为止,一切都很正常很好。接着,问题出现了:

    * 这时再申请未压缩的版本:

wget -S http://localhost/flv.xml

返回的信息为:

–23:47:25–  http://localhost/flv.xml
正在解析主机 localhost… 127.0.0.1
Connecting to localhost|127.0.0.1|:80… 已连接。
已发出 HTTP 请求,正在等待回应…
  HTTP/1.0 200 OK
  Vary: Accept-Encoding
  Content-Encoding: gzip
  Last-Modified: Sun, 02 Nov 2008 14:47:50 GMT
  ETag: "-1733604169"
  Content-Type: text/xml
  Expires: Mon, 03 Nov 2008 15:46:46 GMT
  Cache-Control: max-age=86400
  Accept-Ranges: bytes
  Content-Length: 206898
  Date: Sun, 02 Nov 2008 15:46:46 GMT
  Age: 39
  X-Cache: HIT from localhost
  X-Cache-Lookup: HIT from localhost:80
  Connection: keep-alive
长度:206898 (202K) [text/xml]


response header表明squid返回的仍然是压缩版本,到这里,它已经无法区分cache中的object到底是压缩的还是未压缩的。这时,无论你申请压缩的版本还是申请未压缩的版本,它都会返回你压缩的版本。

接下来,purge掉squid的cache,先申请一个压缩版本的,再申请一个未压缩版本的。问题依旧,这次无论你申请什么版本的,都会返回一个未压缩的。

总结一下,根据我的实验,对于lighty1.4.19+compress源站,squid2.7能够正确的区分用户的request header中的gzip请求。但是无法识别压缩和未压缩版本的cache object,只会简单的返回最后一个缓存的对象。如果遇到cache中缓存的是未压缩版本,那么即使你申请压缩版本,也会返回未压缩版本,导致流量高涨。对于某些大文件,会有很明显的流量毛刺。


原文地址: http://zys.8800.org/?p=258

[ 本帖最后由 zysno1 于 2008-11-3 00:20 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-11-03 00:11 |只看该作者
有同学知道这是为什么么?怎么解决呢?

论坛徽章:
0
3 [报告]
发表于 2008-11-06 14:39 |只看该作者
强大,收益了...
我最近也准备要开始搞几个代理缓存服务器了
我的web服务器也是lighttpd
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP