refresh_pattern參數對squid的影響

在網上搜索N多squid配置關於refresh_pattern的講解,這篇最易懂,轉自http://www.luocheng.cn/?/article/view/id/209

 

在squid.conf.default裏面,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,下面的圖:

 

 

 

上面這張圖來自於《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來說,緩衝的數據在cache中的存活時間是這樣決定的:

 

如果有定義refresh_pattern:只要滿足以下兩個條件之一,緩衝對象過期

緩衝對象在squid的cache緩衝的時間大於refresh_pattern定義的max

緩衝對象在squid的cache緩衝的時間大於(原始數據進入squid的緩衝的時間-原始web數據所規定的Last-Modified時間)*percent

 

如果符合多個refresh_pattern定義,以第一條符合定義的refresh_pattern爲準

如果沒有符合定義的refresh_pattern,則按squid的默認處理規則

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章