squid 参数 refresh_pattern 解释

refresh_pattern指令间接的控制磁盘缓存。它帮助squid决定,是否某个给 定请求是cache命中,或做为cache丢失对待。宽松的设置增长了你的cache命中率,但也增长了用户接收过期响应的机会。另外一方面,保守的设置, 下降了cache命中率和过期响应。html

refresh_pattern规则仅仅应用到没有明确过期期限的响应。原始服务器能使用Expires头部,或者Cache-Control:max-age指令来指定过期期限。正则表达式

你能够在配置文件里放置任意数量的refresh_pattern行。squid按顺序查找它们以匹配正则表达式。当squid找到一个匹配时,它使用相应的值来决定,某个缓存响应是存活仍是过时。refresh_pattern语法以下:算法

refresh_pattern [-i] regexp min percent max [options]

例如:缓存

refresh_pattern -i \.jpg$ 30 50% 4320 reload-into-ims    refresh_pattern -i \.png$ 30 50% 4320 reload-into-ims    refresh_pattern -i \.htm$ 0 20% 1440    refresh_pattern -i \.html$ 0 20% 1440    refresh_pattern -i . 5 25% 2880

regexp参数是大小写敏感的正则表达式。你可使用-i选项来使它们大小写不敏感。squid按顺序来检查refresh_pattern行;当正则表达式之一匹配URI时,它中止搜索。服务器

min参数是分钟数量。它是过期响应的最低时间限制。若是某个响应驻留在cache里的时间没有超过这个最低限制,那么它不会过时。相似的,max参数是存活响应的最高时间限制。若是某个响应驻留在cache里的时间高于这个最高限制,那么它必须被刷新。ide

在 最低和最高时间限制之间的响应,会面对squid的最后修改系数 (LM-factor)算法。对这样的响应,squid计算响应的年龄和最后修改系数,而后将它做为百分比值进行比较。响应年龄简单的就是从原始服务器产 生,或最后一次验证响应后,经历的时间数量。源年龄在Last-Modified和Date头部之间是不一样的。LM-factor是响应年龄与源年龄的比 率。ui

图7-2论证了LM-factor算法。squid缓存了某个目标3个小时 (基于Date和Last-Modified头部)。LM-factor的值是50%,响应在接下来的1.5个小时里是存活的,在这以后,目标会过时并被 看成过期处理。假如用户在存活期间请求cache目标,squid返回没有确认的cache命中。若在过期期间发生请求,squid转发确认请求到原始服 务器。regexp

 

图7-2 基于LM-factor计算过时时间htm

(略图)

理解squid检查不一样值的顺序很是重要。以下是squid的refresh_pattern算法的简单描述:it


假如响应年龄超过refresh_pattern的max值,该响应过时;
假如LM-factor少于refresh_pattern百分比值,该响应存活;
假如响应年龄少于refresh_pattern的min值,该响应存活;
其余状况下,响应过时。

refresh_pattern指令也有少数选项致使squid违背HTTP协议规范。它们以下:

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指令,以便它到达原始服务器。

ignore-reload

该选项致使squid忽略请求里的任何no-cache指令

相关文章
相关标签/搜索