Я размещаю статический веб-сайт в S3 и использую Cloudfront для кэширования файлов. У меня есть 3 файла со следующими заголовками:
- index.html(Cache-Control: no-cache)
- app.js(Cache-Control: max-age = 63072000, public)
- style.css(Cache-Control: max-age = 63072000, public)
В моем html файле используются параметры строки запроса, которые обновляются каждый раз, когда я обновляю файлы css или js. Я сконфигурировал s3 для передачи этих параметров, и я проверил, что он работает, чтобы аннулировать кешированные ресурсы. Мой файл index.html выглядит примерно так:
<html>
<head>
...
<link rel="stylesheet" href="app.css?v=14113e2c764">
</head>
<body>
...
<script src="app.js?v=14113e2c764"></script>
</body>
</html>
Кажется, он отлично работает, когда я нажимаю обновления весь день, но когда я нахожусь на следующее утро и нажимаю свое следующее изменение, файл index.html устарел. Вместо того, чтобы иметь правильный параметр v =, он имеет старый! Единственный способ исправить это - аннулировать html файл вручную. Тогда все работает до конца дня. На следующий день у меня опять проблема.
Что здесь происходит?