Varnish на нескольких серверах с управлением версиями

Varnish на нескольких серверах с управлением версиями

У меня Varnish установлен перед несколькими веб-серверами, я могу запускать их как нативные для Varnish или через проверки upstream через nginx, но кэшируется только статический контент (что неудивительно), также соблюдая строки запросов, т. е.

/main.css?v=1и /main.css?=v2кэшируются отдельно

Я обновляю серверы по одному, на самом деле, все это невозможно сделать одновременно, без простоев, это общая проблема развертывания.

Если main.cssобновляетсяодинбэкэнд и я отправляю запрос в соответствии с новой версией веб-страницы в Varnish и запрашиваю /main.css?=v2, он все еще может искать файл на машине со старой версией, которая main.cssеще не была обновлена, поэтому теперь я получаю v1 в кэше как v2, и я ничего не могу сделать, пока не истечет TTL (что слишком поздно).

Я могу вручную сделать кэш недействительным с помощью запросов, это нормально.

Есть ли автоматизированное решение без ручного вмешательства при переписывании программного обеспечения для обратной связи с лаком? Например:

  1. Возможно ли, чтобы кэш истекал при запуске бэкэнда после успешного зондирования?
  2. что-нибудь еще?

Спасибо

решение1

Если вы загрузите этот код или адаптируете его для своей версии Varnish, вы сможете отправлять запросы типа PURGE с URL-адресом запроса, соответствующим тому, что вы хотите очистить, чтобы стереть элемент из кэша Varnish. Вы можете использовать это, чтобы в основном автоматизировать выборочную очистку в конце процесса развертывания на ваших серверах Varnish с помощью команд cURL или подобных.

https://github.com/dreamhost/varnish-vcl-collection/blob/master/lib/purge.vcl

Связанный контент