Varnish: Purge говорит, что работает, но не удаляет старый контент

Я использую отдельный экземпляр Varnish на виртуальной машине Digital Ocean Ubuntu, которая в основном работает нормально. Настройка используется для загрузки старого сервера Wordpress, который находится где-либо еще. Это работает довольно хорошо, но мне трудно очистить контент. И когда мы говорим о чистке, я имею в виду сделать недействительным кеш для URL-адреса, чтобы принудительно использовать varnish для получения свежей версии из бэкэнда (просто для уверенности, поскольку я заметил некоторое раздражение по поводу чистки / запрета).

Я настроил ACL для очистки, и, насколько я могу видеть с помощью varnishlog, очистки принимаются - с одной стороны от блога WordPress (где W3TC обрабатывает очистку), а также с локальной консоли, где я пытался очистить с помощью curl - X ОЧИСТКА http://url.to.purge

Проблема в том, что я все еще получаю старые версии URL-адреса в браузере независимо от того, что я делаю локально.

Вот как я обрабатываю чистку в vcl_recv:

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

и я получаю VCL_error (200, Purged) при каждой чистке, так что, наверное, все в порядке.

Похоже, я все еще делаю что-то не так. После перезапуска service varnish полностью обновляется кеш, и страницы тоже обновляются - до тех пор лак сохраняет все на века - независимо от того, сколько я очищаю.

моя версия Varnish - 4.0.3.

Любая идея?

Спасибо,

откровенный


person Helmi    schedule 04.09.2015    source источник
comment
Вы очищаете URL полностью? с параметрами и всем?   -  person Redithion    schedule 04.09.2015
comment
нет параметров, и да, я очищаю точный URL. Также не имеет значения, какой URL - даже домашняя страница не работает. Запись в varnishlog выглядит хорошо, но на самом деле ее содержимое не очищается.   -  person Helmi    schedule 04.09.2015
comment
Странно, вы пробовали ban вместо очистки? Не знаю, может сработать (под запретом я имею в виду это)   -  person Redithion    schedule 04.09.2015
comment
Вы пробовали использовать curl вместо браузера, чтобы проверить это? Возможно, ваш браузер кеширует URL-адрес.   -  person brujoand    schedule 19.09.2015
comment
Вы когда-нибудь догадывались об этом? У нас то же самое. varnishlog и заголовки, возвращаемые curl, наводят на мысль, что все в порядке .. Но возраст файла не сбрасывается.   -  person byoungb    schedule 07.04.2017
comment
Кто-нибудь решил это? Я испытываю то же самое   -  person alekstrust    schedule 02.09.2018
comment
Такая же проблема на Varnish 4.0.5. Я вижу бан в ban.list, когда на страницу попадает, бан снимает, но возраст на странице остается прежним.   -  person drew7721    schedule 04.01.2019
comment
У меня точно такая же проблема. Возраст не уменьшается, ХИТЫ продолжают расти. Кто-нибудь нашел решение этого?   -  person Liviu    schedule 25.03.2019
comment
То же самое здесь, но в моем случае HITS увеличивается, а затем после нескольких запросов они сбрасываются на 1 вместо MISS.   -  person hp10    schedule 30.09.2019


Ответы (1)


Получил такое же поведение на Varnish 6 с vcl 4.1. Единственный способ решить эту проблему - явно определить sub vcl_purge следующим образом:

sub vcl_purge {
set req.method = "GET";
set req.http.X-Purger = "Purged";
return (restart);
}

Не удалось найти причину, и это может быть не совсем то, что вам нужно, потому что после очистки он получит контент из серверной части, не дожидаясь запроса клиента. Но так и не нашел другого пути, и мне этого достаточно.

person Kaloyan Georgiev Mehandzhiyski    schedule 29.04.2020