У меня Varnish установлен перед несколькими веб-серверами, я могу запускать их как нативные для Varnish или через проверки upstream через nginx, но кэшируется только статический контент (что неудивительно), также соблюдая строки запросов, т. е.
/main.css?v=1
и /main.css?=v2
кэшируются отдельно
Я обновляю серверы по одному, на самом деле, все это невозможно сделать одновременно, без простоев, это общая проблема развертывания.
Если main.css
обновляетсяодинбэкэнд и я отправляю запрос в соответствии с новой версией веб-страницы в Varnish и запрашиваю /main.css?=v2
, он все еще может искать файл на машине со старой версией, которая main.css
еще не была обновлена, поэтому теперь я получаю v1 в кэше как v2, и я ничего не могу сделать, пока не истечет TTL (что слишком поздно).
Я могу вручную сделать кэш недействительным с помощью запросов, это нормально.
Есть ли автоматизированное решение без ручного вмешательства при переписывании программного обеспечения для обратной связи с лаком? Например:
- Возможно ли, чтобы кэш истекал при запуске бэкэнда после успешного зондирования?
- что-нибудь еще?
Спасибо
решение1
Если вы загрузите этот код или адаптируете его для своей версии Varnish, вы сможете отправлять запросы типа PURGE с URL-адресом запроса, соответствующим тому, что вы хотите очистить, чтобы стереть элемент из кэша Varnish. Вы можете использовать это, чтобы в основном автоматизировать выборочную очистку в конце процесса развертывания на ваших серверах Varnish с помощью команд cURL или подобных.
https://github.com/dreamhost/varnish-vcl-collection/blob/master/lib/purge.vcl