Предотвращение кэширования браузера при обновлении веб-приложений

У меня довольно проблемная проблема, для которой я пока не нашел хорошего решения.

Я разрешаю браузеру кэшировать все статические файлы моего приложения (JS, CSS и изображения) для повышения производительности.

Проблема в том, что когда я делаю обновления, пользователи все еще используют старую версию из своего кеша, которая часто ломает приложение и требует очистки кеша каждый раз для решения проблемы.

Есть ли хороший мультибраузерный подход, который все еще позволяет кэшировать файлы, но может заставить их перезагрузить при необходимости?

Спасибо за любую информацию.

4 ответа

Решение

Добавьте Somethign к URL в качестве параметра, например myresource.css?version=1, Файл будет обработан правильно, это хитрость для принудительной перезагрузки кэша. Вам нужно только генерировать HTML-страницу динамически.

Я слышал разговоры об использовании номеров версий в именах файлов, которые вы хотите, чтобы пользователи кэшировали, но я не могу сказать, насколько "хорошо" это по сравнению с другими вариантами.

Варианты, которые я могу придумать:

  • Уменьшить кеш TTL
  • Храните кешируемый материал в версионном дереве каталогов, например:
    • /app/1.2/css/
    • /app/1.2/js/

Вы можете использовать формат ниже для автоматического случайного управления версиями

для файла js:

<script type="text/javascript" src="js/app.js?seq=<%=DateTime.Now.Ticks%>"></script>

и для файла CSS:

<link rel="stylesheet" type="text/css" href="Styles/styles.css?seq=<%=DateTime.Now.Ticks%>" />

Другие вопросы по тегам