squid中refresh_pattern之stale-while-revalidate=NN参数

3415阅读 0评论2012-11-15 低头、真掩饰
分类:LINUX

refresh_pattern 有很多参数,用户很大,今天研究了下stale-while-revalidate=NN。

是否有在日志中发现以下几个squid 请求状态:
TCP_STALE_HIT  squid提供了过期数据给用户
TCP_ASYNC_MISS 去后端server异步取数据,源站数据有更新
TCP_ASYNC_HIT  去后端server异步取数据,源站数据无更新
以上三种状态码 在设置了 stale-while-revalidate=NN(单位秒)的情况下出现,
这个是一个异步缓存验证机制,当用户请求一个即将过期文件或者已过期的文件时候(age>=max-age),squid先将本地过期数据给用户,然后squid(异步)去源站进行数据对比or更新
若数据有更新,squid则更新自己缓存,提供更新后的数据给下次访问者。

此参数对后端server不稳定情况下很有疗效。
refresh_pattern -i ^\.1\.com/1.txt$ 1 100% 1 stale-while-revalidate=180
在1.txt缓存时间age>60秒后,squid会先把本地缓存的文件给用户,同时squid会去后端server进行数据对比,若后端server此时不能提供服务,也不会影响用户的请求。但注意这个时间配置哦。尽量不要设置的太长。
后端server能正常响应的话,squid会对比数据是否更新,更新的话,就把更新的数据给到下一次请求用户。

上一篇:ntpdate的校验报错和安装下载
下一篇:FIO测试磁盘的iops