squid.conf 中的refresh_pattern详解

这个东西是用来设置对象缓存时间的。
首先理解 refresh_pattern 语法: refresh_pattern [-i] regexp min percent max [options]
例如:
refresh_pattern \.(jpg|png|gif|mp3|xml|css|js)$ 1440    50%     28800    ignore-reload

-i 其实就是是否区分大小写,加上这个参数就是不区分。 regexp代表正则表达式,上例中表示以jpg|png|gif|mp3|xml|css|js 结尾的这些文件,当然这里的| 表示 或 的意思。
几个概念:
resource age =对象进入cache的时间-对象的last_modified,简单点理解就是从对象被缓存到对象被修改之间的时间
response age  =当前时间-对象进入cache的时间,简单理解就是对象已经被缓存了多久

min和max为时间,单位是分钟,上例中 1440就是1天,28800就是20天。

百分比,这个东西用来衡量一个文件的存活时间。存活时间= resource age * 百分比。

[options]  
如果希望页面一进入cache就不删除,直到被主动purge掉为止,可以加上ignore-reload选项.  一般情况可以使用 reload-into-ims

最后说说,如何判断一个文件是否过期:
1.  首先计算出response age
2.  当response age <= max时,对象不过期,而>max时就过期了
3.  当response age介于两者之间时,就需要看 存活期了,当存活期 > response age 时则过期,否则不过期。

过期了的话,squid并不会删除对象,当有请求来访问该文件时,则squid会到前端的web上去读取新的文件,但是squid还是会把当前的文件和web上的文件做对比,如果改了则重新拉取过来缓存,否则不拉取,直接更改resource age 。

添加新评论 »