Предотвращение кэширования браузера при обновлении веб-приложений
У меня довольно проблемная проблема, для которой я пока не нашел хорошего решения.
Я разрешаю браузеру кэшировать все статические файлы моего приложения (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%>" />