squid refresh_pattern命令

refresh_pattern的作用:
用于确定一个页面进入cache后,它在cache中停留的时间。

refresh_pattern 只对后端没设置Expires过期时间的页面起作用,比如论坛页面;而对类似apache mod_expires 设置过的页面不起作用。

语法:
refresh_pattern [-i] regexp min percent max [options]

几个概念:
resource age =对象进入cache的时间-对象的last_modified
response age =当前时间-对象进入cache的时间
LM-factor=(response age)/(resource age)


举个例子,这里只考虑percent, 不考虑min 和 max

例如:refresh_pattern   20%

假设源服务器上www.aaa.com/index.htm -----lastmodified 是       2007-04-10 02:00:00
squid上     proxy.aaa.com/index.htm index.htm进入cache的时间 2007-04-10 03:00:00

1)如果当前时间   2007-04-10 03:00:00
resource age =3点-2点=60分钟
response age =0分钟
index.htm还可以在cache停留的时间(resource age)*20%=12分钟
也就是说,index.htm进入cache后,可以停留12分钟,才被重新确认。


2)如果当前时间 2007-04-10 03:05:00
resource age =3点-2点=60分钟
response age =5分钟
index.htm还可以在cache停留的时间(resource age)*20%=12分钟-5=7
LM-factor=5/60=8.3%<20%

  一直到2007-04-10 03:12:00   LM-factor=12/60=20% 之后,cache中的页面index.htm终于stale。
  如果这时没有index.htm的请求,index.htm会一直在缓存中,如果有index.htm请求,squid收到该请求后,由于已经过 期,squid会向源服务器发一个index.htm是否有改变的请求,源服务器收到后,如果index.htm没有更新,squid就不用更新缓存,直 接把缓存的内容放回给客户端,同时,重置对象进入cache的时间为与源服务器确认的时间,比如2007-04-10 03:13:00,如果正好在这个后重新确认了页面。重置后,resource age变长,相应在cache中存活的时间也变长。

  如果有改变则把最新的index.htm返回给squid,squid收到会更新缓存,然后把新的index.htm返回给客户端,同时根据新页面中的Last_Modified和取页面的时间,重新计算resource age,进一步计算出存活时间。

  实际上,一个页面进入cache后,他的存活时间就确定了,即 (resource age) * 百分比,一直到被重新确认。

  理解了百分比后,min max就好理解了

squid收到一个页面请求时:
1、计算出response age,
2、如果response age<min 则 fresh 如果response age>max 则 stale
3、如果response age在之间,如果response时间<存活时间,fresh,否则stale

 

常用的几个参数的意思

override-expire
该选项导致squid在检查Expires头部之前,先检查min值。这样,一个非零的min时间让squid返回一个未确认的cache命中,即使该响应准备过期。

override-lastmod
改选项导致squid在检查LM-factor百分比之前先检查min值。

reload-into-ims
该选项让squid在确认请求里,以no-cache指令传送一个请求。换句话说,squid在转发请求之前,对该请求增加一个If-Modified- Since头部。注意这点仅仅在目标有Last-Modified时间戳时才能工作。外面进来的请求保留no-cache指令,以便它到达原始服务器。
一般情况可以使用 reload-into-ims。它其实是强行控制对象的超时时间,这违反了http协议的精神,但是在带宽较窄的场合,可以提高明显系统相应时间。
举例:
refresh_pattern -i /.css$ 1440 50% 129600 reload-into-ims
refresh_pattern -i /.xml$ 1440 50% 129600 reload-into-ims
refresh_pattern -i /.html$ 1440 90% 129600 reload-into-ims-
refresh_pattern -i /.shtml$ 1440 90% 129600 reload-into-ims
refresh_pattern -i /.hml$ 1440 90% 129600 reload-into-ims
refresh_pattern -i /.jpg$ 1440 90% 129600 reload-into-ims
refresh_pattern -i /.png$ 1440 90% 129600 reload-into-ims
refresh_pattern -i /.gif$ 1440 90% 129600 ignore-reload
refresh_pattern -i /.bmp$ 1440 90% 129600 reload-into-ims
refresh_pattern -i /.js$ 1440 90% 129600 reload-into-ims

ignore-reload
该选项导致squid忽略请求里的任何no-cache指令。
所以。如果希望内容一进入cache就不删除,直到被主动purge掉为止,可以加上ignore-reload选项,这个我们常用在mp3,wma,wmv,gif之类。
Examples:

refresh_pattern -i /.mp3$ 1440 50% 2880 ignore-reload
refresh_pattern -i /.wmv$ 1440 50% 2880 ignore-reload
refresh_pattern -i /.rm$ 1440 50% 2880 ignore-reload
refresh_pattern -i /.swf$ 1440 50% 2880 ignore-reload
refresh_pattern -i /.mpeg$ 1440 50% 2880 ignore-reload
refresh_pattern -i /.wma$ 1440 50% 2880 ignore-reload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值