2016-02-25 14 views
2

Является ли HTTP-глагол PURGE idempotent? Если я отправлю тот же запрос PURGE дважды, я получу 200 второй раз?Является ли HTTP-метод PURGE idempotent in 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)

При вызове ОЧИСТИТЬ на ресурс (URL) он будет удален из кэша (Varnish), поэтому для следующего запроса GET на том же ресурсе Varnish будет вызывать бэкэнд и кэшировать его ответ. Если вы снова вызовете PURGE на этом ресурсе, он снова будет выведен из кеша.

+0

Ну а я пришлю чистку дважды без запроса ресурса тем. Получу ли я 200 дважды? –

+0

Ответ ДА ​​ –

+0

@GaSacchi: почему бы не просто попробовать его и посмотреть, что на самом деле происходит? –

0

enter image description here

Да, Подуслуги запросы Чистки вернуться 200.

+0

Удивление, что это такое ** Ошибка ** 200 Очищено, хотя .. (Он возвращается также по первому запросу очистки) –