varnish 清理緩存 purge和ban

【軟件版本】html

varnish 4.x後端


參考:https://www.varnish-cache.org/docs/4.1/users-guide/purging.html緩存

【分析purge 和 ban的區別】curl


共同點:ide

清除緩存fetch


不一樣點:ui

purge 是一個動做 執行對訪問的url在緩存中進行purge 清除。 一次只能對一個urlurl

ban 是一個策略,必須先增長ban禁止策略,下次訪問匹配到這個禁止策略的時候,不會去緩存中找,直接去fetch後面的。ban能清理匹配到的任何內容。spa



purge比較好理解,ban看官網的一段解釋翻譯

官方原文:

There is another way to invalidate content: Bans. You can think of bans as a sort of a filter on objects already in the cache. You bancertain content from being served from your cache. You can ban content based on any metadata we have. A ban will only work on objects already in the cache, it does not prevent new content from entering the cache or being served.

Support for bans is built into Varnish and available in the CLI interface. To ban every png object belonging on example.com, issue the following command:

ban req.http.host == "example.com" && req.url ~ "\\.png$"




翻譯:

這個是(清除)無效內容的另外一個方法: Bans. 你能將bans做爲一個排序過的過濾緩存中的對象。你禁止某些內容來自你的緩存中。你能禁止的內容是咱們緩存中的任何元數據。ban 僅僅工做在已經緩存的對象上,它不能阻止一個新的內容條目將被緩存。(我理解的意思是 ban只能使用一次,即一次性清理)



【用法】

purge的用法:

1 vcl配置文件中添加purge容許

2 curl -I - X PURGE http://10.59.74.33/123.jpg


ban的用法:

添加一個ban到禁止list中。

1 varnishadm -S /etc/varnish/secret -T 127.0.0.1:8080 'ban req.url ~ "0*.jpg$"'


當訪問任何0*.jpg的uri的時候,將不會從緩存中取,直接去後端取(其實就是禁止使用緩存,換句話就是達到了 清除緩存的目的,這個就是squid沒有設計到的,由於squid的清理只有purge 只能是執行動做去清理(一個很大的目錄須要不少cpu),而不是想辦法去匹配到禁止的url而後不去進入緩存中去取,達到相同的目的。)

相關文章
相關標籤/搜索