Назад | Перейти на главную страницу

Очистка лаком - аппаратное обновление в браузере

Мы используем лак для прокси / кеширования содержимого на 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);
}

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

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

После разговора с Резой на 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
       }
   }

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