的作用:
BSD爱好者乐园HG&M7`y8||rg用于确定一个页面进入cache后,它在cache中停留的时间。refresh_pattern规则仅仅应用到没有明确过时期限的
BSD爱好者乐园d1rC~m}PfBSD爱好者乐园*``4z rJ,K响应。原始能使用Expires头部,或者Cache-Control:max-age指令来指定过时期限。
BSD爱好者乐园X5a(x ~*Gp'I-S(Tu0xl2xO&^G语法:
BSD爱好者乐园$EZ y_,q Yrefresh_pattern [-i] regexp min percent max [options]
d-~j)~0L5?_Ij X4P CN Nhmin参数是分钟数量。它是过时响应的最低时间限制。如果某个响应驻留在cache里的时间没有超过这个最低限制,
BSD爱好者乐园J Z1f'pB e(v5\"[BSD爱好者乐园 s"H1Of9N那么它不会过期。类似的,max参数是存活响应的最高时间限制。如果某个响应驻留在cache里的时间高于这个最高
t c%v;P3{&n#s\dcBSD爱好者乐园 ?Gh9H0wqQ限制,那么它必须被刷新。
8CLWn[;iBSD爱好者乐园]0V+t'v4[ t在最低和最高时间限制之间的响应,会面对的最后修改系数LM-factor算法LM-factor=(response age)/
BSD爱好者乐园x}!d(to ~ o5S#x#U$}BSD爱好者乐园!\;M1aH@$]+p LU-OW(resource age)。对这样的响应,squid计算响应的年龄和最后修改系数,然后将它作为百分比值进行比较。响应
2q1r/KN6Q4OBSD爱好者乐园/HD!s.uJ N7{)_SG年龄简单的就是从原始服务器产生,或最后一次验证响应后,经历的时间数量。源年龄在Last-Modified和Date头
$ij,C aNne?BSD爱好者乐园 Wy"{~5A ^5qR部之间是不同的。LM-factor是响应年龄与源年龄的比率。
BSD爱好者乐园:Ir|O0M|BSD爱好者乐园x7K6FM/RY#D常用的几个的意思
BSD爱好者乐园C8W+FBl.yBoGvBSD爱好者乐园s4PN P%f|7Moverride-expire
5_V b1^p?/Yc该选项导致squid在检查Expires头部之前,先检查min值。这样,一个非零的min时间让squid返回一个未确认的
BSD爱好者乐园J @FSO5r*DX+]~j|9J%o2lcache命中,即使该响应准备过期。
%W|RjvkBSD爱好者乐园 bN{}KJmoverride-lastmod
"CO7Z0Gq*^eN改选项导致squid在检查LM-factor百分比之前先检查min值。
BSD爱好者乐园 HJ|[[0F!Y/V%d\&T^p'Oreload-into-ims
d$d1c9EG?4GR该选项让squid在确认请求里,以no-cache指令传送一个请求。换句话说,squid在转发请求之前,对该请求增加一
BSD爱好者乐园ea-sgj1Mu3VBSD爱好者乐园d#] u-O(arF个If-Modified- Since头部。注意这点仅仅在目标有Last-Modified时间戳时才能工作。外面进来的请求保留no-
BSD爱好者乐园;T gx&I8y5hBSD爱好者乐园iki4k,`[tcache指令,以便它到达原始服务器。
jN9Fd9r[$i!F r3x一般情况可以使用 reload-into-ims。它其实是强行控制对象的超时时间,这违反了http协议的精神,但是在带宽
BSD爱好者乐园)PG s&d:NUr%UBSD爱好者乐园\7j1kQ[7f较窄的场合,可以提高明显系统相应时间。
BSD爱好者乐园1|b){h|q2B_3Y举例:
BSD爱好者乐园*@xu\u:b8|f-p-Zrefresh_pattern -i \.css$ 1440 50% 129600 reload-into-ims
3m @{9rq D1q irefresh_pattern -i \.xml$ 1440 50% 129600 reload-into-ims
:m*R!jb-~^5N~refresh_pattern -i \.html$ 1440 90% 129600 reload-into-ims-
4e y Q8P/DKrefresh_pattern -i \.shtml$ 1440 90% 129600 reload-into-ims
BSD爱好者乐园#e'n;GDFM&KFrefresh_pattern -i \.hml$ 1440 90% 129600 reload-into-ims
BSD爱好者乐园H"]/qI&u#Q*k7[4O#Arefresh_pattern -i \.jpg$ 1440 90% 129600 reload-into-ims
BSD爱好者乐园 gb d#{,N4sRrefresh_pattern -i \.png$ 1440 90% 129600 reload-into-ims
BSD爱好者乐园Rt(Trs6fR9ITBrefresh_pattern -i \.gif$ 1440 90% 129600 ignore-reload
$Q6W.m/K*PqW2qOlcrefresh_pattern -i \.bmp$ 1440 90% 129600 reload-into-ims
6P4A6JRE(@]erefresh_pattern -i \.js$ 1440 90% 129600 reload-into-ims
W&]#dp7Tv+LBSD爱好者乐园,E y3[7Ghip9bignore-reload
t+{#OoE该选项导致squid忽略请求里的任何no-cache指令。
BSD爱好者乐园+Sj I(h"R4iFk所以。如果希望内容一进入cache就不,直到被主动purge掉为止,可以加上ignore-reload选项,这个我们常用
b Q r4S)L]0A0^BSD爱好者乐园4h,P+b;ZI'Z在mp3,wma,wmv,gif之类。
I:}U5IW&Pw g wR;^Examples:
BSD爱好者乐园 n ei7K"_0J2maYg bfrefresh_pattern -i \.mp3$ 1440 50% 2880 ignore-reload
BSD爱好者乐园 o3f*Oq(DwQrrefresh_pattern -i \.wmv$ 1440 50% 2880 ignore-reload
BSD爱好者乐园 |0{q/g z"Drefresh_pattern -i \.rm$ 1440 50% 2880 ignore-reload
BSD爱好者乐园/PO%Cr'P6a-Sa$lrefresh_pattern -i \.swf$ 1440 50% 2880 ignore-reload
pL!Tut4I frefresh_pattern -i \.mpeg$ 1440 50% 2880 ignore-reload
*A(N t ?R!W8Nmrrefresh_pattern -i \.wma$ 1440 50% 2880 ignore-reload
+aA0GL;?qJresource age =对象进入cache的时间-对象的last_modified
p"Y0F0F-X0cx4{response age =当前时间-对象进入cache的时间
`W{"_^&qgLM-factor=(response age)/(resource age)
-iiH+{#~7m$l S1dQ举个例子,这里只考虑percent, 不考虑min 和max
BSD爱好者乐园HvV?[ fRlP'~y@ k6I'OW例如:refresh_pattern 20%
BSD爱好者乐园3SA@{z$|;mu5U1SN d)WS假设源服务器上-----lastmodified 是 2007-04-10 02:00:00
BSD爱好者乐园SM5Z3w)mm$usquid上 proxy.aaa.com/index.htm index.htm进入cache的时间 2007-04-10 03:00:00
BSD爱好者乐园 n4aTh7Ir,D(y_e"lQI Z"@i.``w$e7Zb H1)如果当前时间 2007-04-10 03:00:00
#\ o*P$Qq,s&I*Zresource age =3点-2点=60分钟
1o"~'q)G&k%uMresponse age =0分钟
BSD爱好者乐园 lz%LL7j#T&n+M#xuindex.htm还可以在cache停留的时间(resource age)*20%=12分钟
tW9J5{:t WL也就是说,index.htm进入cache后,可以停留12分钟,才被重新确认。
BSD爱好者乐园(@'qf f5Fh+~@ W u~'~'iBSD爱好者乐园[ B1yJ}u:FPw_'}2)如果当前时间 2007-04-10 03:05:00
*R/uS-MRresource age =3点-2点=60分钟
BSD爱好者乐园!AB.f!o:X\response age =5分钟
BSD爱好者乐园-IjR#mVsF Rcindex.htm还可以在cache停留的时间(resource age)*20%=12分钟-5=7
%P z/}d/i!b&qLM-factor=5/60=8.3%<20%
BSD爱好者乐园(X:|N&z:^BSD爱好者乐园)TzF,}~rx t一直到2007-04-10 03:12:00 LM-factor=12/60=20% 之后,cache中的页面index.htm终于stale。
GN Qv:\]如果这时没有index.htm的请求,index.htm会一直在缓存中,如果有index.htm请求,squid收到该请求后,由于已
w&A+n C@t_,U[f/c\M^Y'p"S经过期, squid会向源服务器发一个index.htm是否有改变的请求,源服务器收到后,如果index.htm没有更新,
)Z K2@ L.Z9f:W)`@9IC%l3k)of$_Jsquid就不用更新缓存,直接把缓存的内容放回给客户端,同时,重置对象进入cache的时间为与源服务器确认的时
~^iG1Q[%G8LBSD爱好者乐园h%\}z0^^2H8Z-Hp间,比如2007-04-10 03:13:00,如果正好在这个后重新确认了页面。重置后,resource age变长,相应在cache中
BSD爱好者乐园3s^!b6Y3l-DwK9]Z7EBSD爱好者乐园D UM:B5I"`{存活的时间也变长。
p2hW V!e3J1r_ Y CtsKn5~'b如果有改变则把最新的index.htm返回给squid,squid收到会更新缓存,然后把新的index.htm返回给客户端,同时根
BSD爱好者乐园u:|Cb'G!Tfm;@t9K\xTm据新页面中的Last_Modified和取页面的时间,重新计算resource age,进一步计算出存活时间。
BSD爱好者乐园cEps/ZbBSD爱好者乐园}0O8cgu O实际上,一个页面进入cache后,他的存活时间就确定了,即 (resource age) * 百分比,一直到被重新确认。