Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29956879
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2010-07-06 23:27:04

原文链接: IT运维专家网--"自由平等,互助分享!" HTTP 1.1的规范建议所有的请求输出都包含Vary Header,目的是针对对前端缓存服务器,增加针对Vary制定的各种Header类型进行不同的缓存处理,在浏览器规格复杂的情况下,不利于缓存的命中,所以要在被缓存的服务器上设置:

   
引用
Header unset Vary

问题是这样被发现的:最近使用进行后台静态文件加速。但是总是发现几乎是只代理而不缓存,而内存缓存模式又没有统计工具查看缓存内容和命中率。转为用后,前端缓存目录空间增加非常快,以至于经常需要删除文件,而删除文件的I/O损失超过了直接访问后 台访问的加速所得。后台明明只有几M模板图片和CSS文件,为什么缓存空间上G而且命中率那么低呢?查看了一下缓存目录下的文件,Apache的前端磁盘 缓存就会根据浏览器除了针对内容的.data文件和.header文件外还有一个.vary目录,而这个vary目录下又会按照顶级的cache规则再 mapping出2级目录来,目录节点个数过多造成磁盘空间的浪费:

a/b/Jqyw8OvBIlgaef7Zb8lQ.data
a/b/Jqyw8OvBIlgaef7Zb8lQ.header
a/b/Jqyw8OvBIlgaef7Zb8lQ.header.vary/a/b

当遇到和原有Vary不同的Header时,会在 header.vary目录下生成更多的缓存;从Apache的讨论组上看原因就是IE的AcceptEncoding请求头信息里增加了一个空格
IE    : Accept-Encoding: gzip, deflate
Firefox: Accept-Encoding: gzip,deflate

于是按照Fernando的方法,将后台的Vary Header禁掉了。缓存空间立刻停止了增长(还是个别有header.vary目录出现)。


Squid 3.0中的隐藏配置:
引用
reply_header_access Vary    deny all



如果用nginx proxy 可以:
引用
proxy_hide_header Vary;
阅读(1245) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-07-06 23:32:11

写一份工具脚本。方便日常的命令书写的