Назад | Перейти на главную страницу

Как убедиться, что клиенты обновляют кеш своего браузера при обновлении моего веб-сайта?

Я использую HTTP 1.1 Cache-Control заголовок для реализации кэширования на стороне клиента. Поскольку я обновляю свой сайт только раз в месяц, я бы хотел CSS и JS файлы будут кэшироваться на 30 дней с Cache-Control: max-age=2592000. Проблема в том, что 30-дневный период, определяемый Cache-Control не совпадает с циклом обновления веб-сайта, он начинается с момента, когда пользователи посещают сайт, и заканчивается через 30 дней, что означает, что обновление может произойти тем временем, и пользователи какое-то время будут работать с устаревшим контентом, что может нарушить отображение веб-сайта, если, например, HTML и CSS больше не совпадают.

Как я могу выполнять кэширование контента на стороне клиента в течение нескольких дней, но каким-то образом заставить пользователей обновлять свои CSS/JS файлы после обновления сайта?

Одно из решений, которое я мог придумать, заключается в том, что если обновления веб-сайта можно запланировать, max-age возвращаемый сервером может быть уменьшен каждый день соответственно, так что независимо от того, когда люди посещают веб-сайт, конец периода кеширования совпадет с обновлением веб-сайта, но изменение конфигурации сервера каждый день противоречит одному из моих принципов системного администратора (один раз он работает, не трогайте его).

Добавить отпечатки пальцев / хэши ваши URL-адреса CSS и JS и установите заголовки Expires / Cache-Control в далеком будущем.

Это тоже техника, которую Rails Asset Pipeline использует.