Immutable-ресурсы: долгий кеш с новым адресом при изменении
Статические файлы с версией в имени можно хранить в кеше долго, если по прежнему адресу больше не публикуется другое содержимое. Такая стратегия связывает обновление ресурса с изменением URL.
Назначение
Статические файлы с версией в имени можно хранить в кеше долго, если по прежнему адресу больше не публикуется другое содержимое. Такая стратегия связывает обновление ресурса с изменением URL.
Как это работает
Max-age задаёт срок свежести, immutable сообщает, что представление не предполагается менять, пока оно свежее. Новый CSS или JavaScript получает новый адрес, а HTML начинает ссылаться на него после согласованной публикации.
Пример
GET /assets/site.a1b2c3.css HTTP/1.1
Пример заголовка ответа для публичного версионированного файла:
Cache-Control: public, max-age=31536000, immutable
Что должно получиться
Браузер может повторно использовать свежий файл без обычной повторной проверки. Маркер a1b2c3 здесь иллюстративный: в сборке его связывают с версией или хешем содержимого.
Граница применения и частая ошибка
Не задавайте такой режим персональным ответам или HTML, который должен быстро обновляться. Перезапись файла под старым именем оставит часть посетителей со старой копией. Прежние ресурсы нельзя удалять сразу, если на них ещё ссылаются закешированные страницы.
Самостоятельная проверка
Подготовьте две версии CSS с разными именами. Проверьте обычное открытие, повторную загрузку и откат HTML к первой версии. Убедитесь, что обе ссылки доступны на протяжении выбранного периода совместимости.