您的位置:首页 > 运维架构 > 反向代理

对提高squid命中率的一些研究

2011-10-27 11:39 267 查看
对提高squid命中率的一些研究
如何提高Squid的命中率是很多linux管理员比较头疼的问题,比如说在refresh_pattern这参数后面加入ignore-no-cache ignore-private reload-into-ims override-expire override-lastmod ignore-no-store refresh-ims这样的参数以提高命中率,其实还有一个地方往往是比较容易忽略vary_ignore_expire on这个参数。
我们来看一下squid对vary头信息的解释:vary机制是http1.1 协议的新特性,使得server端可以根据用户请求返回给用户不同的内容,现在互联网中应用vary最广的一点就是对压缩的支持,例如当用户请求带着header “Accept-Encoding: gzip,deflate”,表明用户期望从server端拿到压缩的内容,这样server端会给用户一个包含压缩内容的文件,并带着vary头“vary: Accept-Encoding”头,和“Content-Encoding:gzip ”头,如果用户请求非压缩的内容,源站也就可以给用户非压缩的内容。squid对vary机制的支持是这样的,因为它要对用户请求的内容给出不同vary的内容,因此对于一个url在cache上需要存多份,就拿压缩、非压缩这两份来举例说明,它采用索引文件的形式,在索引文件中存着相应内容的vary文件索引,我们把索引的文件成为索引object,其它两个文件叫做vary Object,这样其实在cache中实际存储的文件数是3个。存储是索引object的key值由url,method计算出来,其它两个索引的object的key由url,method,和vary头计算出来,所以是三个不同的索引文件。
如果有一些服务器的web应用程序提供的还是http1.0的协议的话,对于vary_ignore_expire on这个参数是有作用的。因为默认vary_ignore_expire是off,如果http1.0的vary信息里带有过期时间的话,squid还是不能缓存住。这时我们开始这个参数对提高命中率会有一定帮助

本文出自 “pythoner中最好的op” 博客,请务必保留此出处http://wylok.blog.51cto.com/2654490/698849
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: