2016-02-25 62 views
2

HTTP動詞PURGE是冪等的嗎? 如果我兩次發送相同的PURGE請求,我會第二次收到200嗎?清漆中的HTTP方法PURGE是冪等的嗎?

我有一個微服務,在將消息發佈到兔子隊列之前使Varnish緩存無效。在清除失敗的情況下,我們需要記錄並繼續執行。

隊列使用者必須從Varnish緩存中獲取資源的最新狀態。 在第一個微服務的第一個清除成功的情況下,第二個微服務的新清除請求(實際上從清除請求資源之前)是否會返回成功?

回答

3

PURGE不是標準的HTTP方法。這只是一些清漆VCL配置 - 或通常以這種方式類似:

if (req.method == "PURGE") { 
     if (!client.ip ~ purge) { 
       return(synth(405,"Not allowed.")); 
     } 
     return (purge); 
} 

(參見:https://www.varnish-cache.org/docs/trunk/users-guide/purging.html

當你調用PURGE上的資源(URL),它會從緩存中刪除( Varnish),因此對於相同資源上的下一個GET請求,Varnish將調用後端並緩存其響應。如果你再次在這個資源上調用PURGE,它將會再次從緩存中清除。

+0

好,但我會送兩次的清洗,而無需請求資源的同時。我會收到200次兩次? –

+0

答案是YES –

+0

@GaSacchi:爲什麼不試試看看實際發生了什麼? –

0

enter image description here

是,multipile PURGE請求返回200

+0

想知道那是什麼**錯誤** 200儘管清除..(它也返回第一個清除請求) –