blog » Squid代理技术 » Coolzsb的杂货铺子-refresh_pattern参数对squid的影响

Coolzsb的杂货铺子-refresh_pattern参数对squid的影响

 

转自:Coolzsb的杂货铺子

这两天跟扶凯同学讨论了一下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,下面的图:

LM-factor算法
上面这张图来自于《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的过期,由percent or Min,Max来决定.看清哦。是or.是由这二个其中一个那个先到期,那个就先生效。后面的那个不会生效.

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

  • 如果有定义refresh_pattern:只要满足以下两个条件之一,缓冲对象过期
    • 缓冲对象在squid的cache缓冲的时间大于refresh_pattern定义的max
    • 缓冲对象在squid的cache缓冲的时间大于(原始数据进入squid的缓冲的时间-原始web数据所规定的Last-Modified时间)*percent
  • 如果符合多个refresh_pattern定义,以第一条符合定义的refresh_pattern为准
  • 如果没有符合定义的refresh_pattern,则按squid的默认处理规则

下面这个会比较安装明白,这是对referesh_pattern

FRESH if (CURRENT_DATE - DATE) < min

FRESH if (CURRENT_DATE - DATE)/(DATE - LM_DATE) < percent

STABLE if (CURRENT_DATE - DATE) > max

OTHER, STABLE

RSS 2.0 | leave a response | trackback

17fav 收藏本文

No Responses

  1. 1 31st, 2008 / 16:15 guoguoseo Says:

    您好站长 我想申请一个友情链接
    您的链接已经做好
    地址:http://www.caojinlong.com.cn
    名称:曹金龙的博客

  2. 1 31st, 2008 / 16:49 扶凯 Says:

    抱歉。你的文章太少了。以后多一点才交换好吗?

Leave a Reply

收藏 & 分享

Powered by 17fav.com