2010-01-12 3 views
5

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

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

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

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

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

ответ

7

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

+0

+1. Это то, что .Net делает, когда вы используете встроенные веб-ресурсы. – David

+0

Этот вопрос, кажется, охватывает тему более подробно: http://stackoverflow.com/questions/118884/what-is-an-elegant-way-to-force-browsers-to-reload-cached-css-js- файлы – ewernli

+0

Привет. Спасибо за ссылку, похоже, дает очень подробное объяснение. Кроме того, чтобы понять ваше собственное объяснение, параметр версии должен быть вечно сохранен в ссылке, а затем увеличиваться каждый раз при обновлении версии (как в ссылке, которую вы опубликовали)? Еще раз спасибо. – SyBer

0

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

0

Варианты я могу думать:

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