refresh_pattern参数对squid的影响

在squid.conf.default里面,refresh_pattern参数下面的注释是这样的:

TAG: refresh_pattern

usage: refresh_pattern [-i] regex min percent max [options]

Basically a cached object is:

FRESH if expires < now, else STALE

STALE if age > max

FRESH if lm-factor < percent, else STALE

FRESH if age < min

else STALE

以上所有的时间都是以分钟为单位计算。 很容易看懂是不是?

refresh_pattern指出的缓冲对象过期了,这个对象过期。(这不是废话嘛!)

refresh_pattern指出的缓冲对象在squid的cache缓冲的时间大于max的话,这个对象过期。

refresh_pattern指出的缓冲对象的lm-factor大于等于percent的话,这个对象过期。

refresh_pattern指出的缓冲对象在squid的cache缓冲的时间小于min的话,这个对象不过期。

可是,这个lm-factor到底是怎么算的?有什么具体意义?估计好多同学搞不清楚了吧。来,look,下面的图:

上面这张图来自于《Squid.Definitive.Guide》第七章,对squid的LM-factor算法作出了一个很直观的描述。

请注意这张图的起始时间坐标:

Last-Modified,这个是由squid读取的原始web数据所规定的。

然后就是Date,这个是原始数据进入squid的缓冲的时间。

最后就是Expires,这个就是原始数据在squid中的缓冲过期时间。

可以很容易的得出结论,对于LM-factor算法来说,原始数据在squid中的缓冲时间为

(原始数据进入squid的缓冲的时间-原始web数据所规定的Last-Modified时间)*percent

所以,我们可以郑重得出结论,在squid的refresh_pattern设置中,percent与Min、Max两个值是完全没有关系!

最后总结一下,对于squid来说,缓冲的数据在cache中的存活时间是这样决定的:

如果有定义refresh_pattern:只要满足以下两个条件之一,缓冲对象过期

缓冲对象在squid的cache缓冲的时间大于refresh_pattern定义的max

缓冲对象在squid的cache缓冲的时间大于(原始数据进入squid的缓冲的时间-原始web数据所规定的Last-Modified时间)*percent

如果符合多个refresh_pattern定义,以第一条符合定义的refresh_pattern为准

如果没有符合定义的refresh_pattern,则按squid的默认处理规则

最新评论:

no.10146 nejmgw3hu 188.143.232.32 2016-06-08 12:59

Your story was really inamfortive, thanks!

no.841 chenhualove 123.145.93.43 2009-04-10 17:06

呵呵 太难了 不懂也。

no.814 ddwe 58.17.150.98 2009-03-25 18:11

Passed by

no.800 song 61.135.165.24 2009-03-19 17:23

不好意思啊~我以为你的blog是WP系统,心血来潮做了下测试,结果发现不是~ 真对不起,发了90多条垃圾评论,烦请费心删除一下:-) 这是你自己开发的程序吧~找个时间做一个访问频率限制~
fangzi 2009-03-21 15:26

自己写的,感谢你帮我做了个压力测试啊~~

发表评论:

邮箱: