Varnish Purge - Hard Refresh on Browser

Мы используем лак для прокси / кеширования содержимого на 2 веб-серверах, на которых запущен drupal. С учетом сказанного, похоже, все в порядке, страницы кэшируются, drupal может сделать запрос на очистку и так далее. Однако мы наблюдаем странную проблему: когда вы открываете страницу и выполняете жесткое обновление (сдвиг + обновление), мы получаем сообщение «Ошибка 200 очищена». Это происходит только при аппаратном обновлении. Последующее обновление вернет страницу обратно.

Конфигурация представляет собой простой блок очистки согласно общей документации. Что мы здесь делаем не так, что эта ошибка вызывается аппаратными обновлениями?

# Allow purging
if (req.method == "PURGE") {
    if (!client.ip ~ purge) {
        # Return Error 405 if not allowed.
        return (synth(405, "Forbidden - Not allowed."));
    }

   return (purge);
}

Ошибка при смене + обновление:

Error 200 Purged

Заранее благодарим вас за любые указания по этому поводу.

1
задан 25 May 2016 в 21:41
1 ответ

После разговора с Резой на IRC-канале Varnish выяснилось, что у меня был фрагмент кода, который был сломан и небезопасен. Чанк был:

if (req.http.Cache-Control ~ "(?i)no-cache") {
   # http://varnish.projects.linpro.no/wiki/VCLExampleEnableForceRefresh
   # Ignore requests via proxy caches and badly behaved crawlers
   # like msnbot that send no-cache with every request.
       if (! (req.http.Via || req.http.User-Agent ~ "(?i)bot" || req.http.X-Purge)) {
           #set req.hash_always_miss = true; # Doesn't seems to refresh the object in the cache
           return(purge); # Couple this with restart in vcl_purge and X-Purge header to avoid loops
       }
   }

После удаления все работает как задумано. Спасибо, Реза

0
ответ дан 4 December 2019 в 06:16

Теги

Похожие вопросы