2013-07-16 54 views
1

我想調試與varnish不一致的行爲。
我有一個應用程序,當一段內容被更新時,一個禁止請求被髮送到varnish以將其從緩存中移除並使該緩存失效。問題在於,雖然我可以在清漆日誌中看到禁令,但這種方式在大多數情況下都可以正常工作,但不會出現這種情況。只是爲了改寫,當我保存一段內容時,禁止發佈到形式爲 1374003254.031996 75 req.http.host ~ www.example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})的清漆,其中539250是存在於URL中的唯一內容ID。爲什麼清漆禁止請求不刪除/無效緩存的數據?

我登錄到清漆主機並檢查清漆過程。執行PS英法| grep的給人的Varn
root 8889 1 0 15:19 ? 00:00:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -T :8100 -f /etc/varnish/qa.vcl -u varnish -g varnish -h critbit -p http_max_hdr 256 -p thread_pool_min 200 -p thread_pool_max 4000 -p thread_pools 2 -p thread_pool_stack 262144 -p thread_pool_add_delay 2 -p session_linger 100 -p sess_timeout 60 -p listen_depth 4096 -p lru_interval 20 -p ban_lurker_sleep 0.2 -s malloc,1G

varnish 8897 8889 0 15:19 ? 00:00:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -T :8100 -f /etc/varnish/qa.vcl -u varnish -g varnish -h critbit -p http_max_hdr 256 -p thread_pool_min 200 -p thread_pool_max 4000 -p thread_pools 2 -p thread_pool_stack 262144 -p thread_pool_add_delay 2 -p session_linger 100 -p sess_timeout 60 -p listen_depth 4096 -p lru_interval 20 -p ban_lurker_sleep 0.2 -s malloc,1G

是否正常有2個進程?

然後我做的清漆CLI的ban.list:

1374003254.031996 75 req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374003202.365076 224G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374003116.772315 83G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374002967.450431 267G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374002756.701640 187G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})

所有我想知道是否有錯的財產以後造成的禁令不刪除緩存的數據。

+0

什麼問題?您正在接受禁令發佈前被緩存的內容嗎? –

+0

是的。至少這是我懷疑的。可能有另一個緩存層。無論如何,我只是想根據我的文章中顯示的參數來驗證清漆運行正常。另外,有沒有一種方法可以驗證從前端發出的禁令?也許是一個標題,看看清漆是否確實禁止了緩存中的對象?這是'年齡',我正確嗎? – awm

+1

發佈清漆禁令不會改變客戶的緩存行爲。如果您的瀏覽器緩存資源並且不嘗試重新驗證資源,或者嘗試使用etag或後端中的最後修改日期重新驗證資源,但不會更改前/後禁止,您仍然會看到舊內容。換檔刷新應強制瀏覽器請求清漆中的所有內容的新副本。在禁止之後使用curl檢查清漆的響應標題,如果在第一個禁止發佈請求中Age標頭爲0,則清漆將從後端重新加載內容。 –

回答