-
2008年04月12日
利用Header机制隐掉Vary,提高mod_cache缓存的命中率 - [技术笔记]
HTTP 1.1的规范建议所有的请求输出都包含Vary Header,目的是针对对前端缓存服务器,增加针对Vary制定的各种Header类型进行不同的缓存处理,在浏览器规格复杂的情况下,不利于缓存的命中,所以要在被缓存的服务器上设置:
Header unset Vary
问题是这样被发现的:最近使用Apache 2.2的内存缓存mod_mem_cache机制进行后台静态文件加速。但是总是发现几乎是只代理而不缓存,而内存缓存模式又没有统计工具查看缓存内容和命中率。转为用mod_disk_cache后,前端缓存目录空间增加非常快,以至于经常需要删除文件,而删除文件的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目录出现)。另外一个配置优化是不要启用后台的Expires Header;
ExpiresActive off
由前端的Cache服务器设置缓存规则,基本上到后台的访问就很少了;记录一个调试缓存缓存用命令行看Header输出的方法:
用curl -I 查看HTTP头信息;
查看缓存后输出结果:
curl -I http://www.example.com/foo.bar
查看缓存前的服务器输出:
curl -I -H "Host: www.example.com" http://ip.address.of.example/foo.bar
[chedong]$ curl -I -H "Host: public.blogbus.com" http://192.168.1.17/rss/xianguo.png
HTTP/1.1 200 OK
Date: Sat, 12 Apr 2008 07:09:51 GMT
Server: Apache
Last-Modified: Mon, 28 Jan 2008 03:34:55 GMT
Accept-Ranges: bytes
Content-Length: 1353
Content-Type: image/png[chedong]$ curl -I http://public.blogbus.com/rss/xianguo.png
HTTP/1.1 200 OK
Date: Sat, 12 Apr 2008 07:10:01 GMT
Server: Apache/2.2.8 (Unix)
Last-Modified: Mon, 28 Jan 2008 03:34:55 GMT
Accept-Ranges: bytes
Content-Length: 1353
Cache-Control: max-age=20736000
Expires: Mon, 08 Dec 2008 06:27:41 GMT
Node: B01-AD-01
Age: 2540
Content-Type: image/png -
2008年02月03日
如何区分字体支持的中文字符集 - [技术笔记]
横戈最近写了一篇关于梁启超的《少年中国说》,其中有不少文言的字段,有没有发现:矞(yù)矞皇皇中的矞字和其他文字的字体是不一样的。
原因是这样:窦毅的模板中目前选择的缺省字体是楷体,而楷体目前只支持GB2312字符集(包含6k多个汉字),所以遇到生僻字不在其中的时候,切换回了系统缺省的宋体(雅黑)等支持GBK的字体(GBK标准支持2万多汉字)。所以当文字中有大量生僻字的时候,最好要选择支持的字符比较全面的字体,目前的中文操作系统缺省字体都是支持GB18030的,否... -
2007年12月25日
_debconf-show': not a valid identifier 错误的解决 - [技术笔记]
今天在登录服务器的时候: .bashrc和 .bash_profile中的ll='ls -FAl'总是不起作用,直接source一下:就出错误信息: _debconf-show': not a valid identifier
后来查了一下: 原来是用户缺省shell设置为/bin/sh了;改成 /bin/bash以后就ok了。
-
2007年11月30日
GReader的推荐功能 - [技术笔记]
首页:右上角增加了一个,热门推荐 是根据你的订阅习惯推荐出的,你可能还没订阅的Blog。
给我的推荐列表是:
我们进入未来,可我们的眼光却看着过去WebLeOn's BlogYou never know what you can do till you try.












