Очень распространенное решение - сделать следующее:
<ifModule mod_headers.c>
FileETag None
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Thu, 01 Jan 1970 00:00:01 GMT"
</ifModule>
Я действительно хочу, чтобы они были кэшированы, но я также хочу, чтобы они были признаны недействительными при повторном развертывании. Я думаю, что мне нужно повторно включить ETag, а затем, когда мы повторно загружаем файлы, «прикоснитесь» к ним, чтобы все метки времени считали текущее время, и они получили другой ETag.
Я несколько следую тому, что читаю из этого ответа:
https://stackoverflow.com/questions/499966/etag-vs-header-expires
Это звучит правильно?
Etag - хорошая идея, но ваш заголовок expires мешает ей. Почему бы просто не установить для заголовка expires разумное значение? Слишком много людей устанавливают безумные даты истечения срока действия, из-за которых для правильно настроенного клиента клиент даже не отправляет запрос на сервер.
Во-первых, установите для срока действия что-то разумное, например request date + 1 week
(независимо от вашего ожидаемого цикла выпуска). Затем клиенты, которые правильно следуют спецификациям для заголовков с истекшим сроком действия, вернутся через это время. Это намного проще и надежнее, чем пытаться кешировать все при каждом развертывании.
РЕДАКТИРОВАТЬ: Я предположил, что приведенный вами пример был вашей конфигурацией. Я не хочу, чтобы это прозвучало резко, но я вижу, как люди все время делают глупости с кешированием.