Я хотел бы создать задание cron, которое удалит наш кеш squid и перезапустит его. Причина, по которой я это делаю, заключается в том, что, когда я загружаю новый код javascript сборки на наш веб-сервер, когда я просматриваю наше приложение в браузере, указывающее на наш кальмар, я все равно получаю старый код, даже если я очистил кеш своего браузера.
Он начинает работать после того, как я очищаю кеш нашего сквида и перезапускаю его.
Мне действительно нужна работа для этого, или мне просто не хватает конфигурации в нашем squid? Конечно, нам все еще нужно кеширование, но не тогда, когда была загружена новая сборка веб-приложения.
Вам необходимо убедиться, что Squid правильно настроен для проверки восходящего потока при каждом запросе кеша, и установить HTTP If-Modified-Since
заголовок по каждому запросу.
Если вышестоящий сервер отправляет ответ с 304 Not Modified
, то Squid может отправить существующую версию кеша. Если вышестоящий сервер отвечает с новой версией, то Squid может обновить свой кеш и отправить новую версию файла.
Проверьте свой squid.conf, чтобы убедиться, что в нем нет строк refresh_pattern, указывающих Squid не подчиняться / игнорировать инструкции кеширования HTTP. Это должно быть все, что вам нужно сделать. Squid выполнит повторную проверку (REFRESH / IMS) по умолчанию всякий раз, когда это необходимо, остальное остается за исходным сервером.
Убедитесь, что ваш сервер создает заголовки Last-Modified и, если возможно, ETag для каждого ответа. Squid старше 3.5.21 нуждается в этом для повторной проверки.
Если ваши изменения происходят с известными регулярными интервалами, должны быть отправлены заголовки Cache-Control: max-age = N и Expires, которые сообщают Squid, когда произойдет следующее изменение. В противном случае, если время непредсказуемо, должен быть выдан заголовок Cache-Control: no-cache.
Вам также необходимо убедиться, что ваш сервер правильно выдает 304 ответа, если контент не изменился. Если это не так, обратитесь к документации по серверам, чтобы узнать, как это исправить.