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