Как предотвратить кеширование браузером ресурсов изменяющихся в зависимости от версии? - CodeHelper

Как предотвратить кеширование браузером ресурсов изменяющихся в зависимости от версии?

3

Некоторые ресурсы сайта, такие как CSS- и Javascript-файлы сильно меняются при разработке новых версий этого сайта. При этом браузеры кешируют старые версии ресурсов, вызывая некорректную работу сайта. Как с этим бороться?

Лучший ответ:

3

Нужно добавить к ссылке на ресурс строку с параметром версии. Например так:

<link href="/Content/Site.css?v=1.0.0.208" rel="stylesheet" type="text/css" />

Строка v=1.0.0.208 соответствует версии сайта. Таким образом, браузер успешно закеширует этот ресурс, но при обновлении версии сайта адрес ресурса изменится и браузер его перезагрузит.

Новые ответы


0

В html странице, нужно использовать следующие meta-тэги:

<html>
  <head>
    <meta http-equiv="Cache-Control" content="no-cache, no-store, max-age=0, must-revalidate"/>
    <meta http-equiv="Pragma" content="no-cache"/>
    <meta http-equiv="Expires" content="Fri, 01 Jan 1990 00:00:00 GMT"/>
  </head>
  <body>
    ...
  </body>
<html>

Использование meta-тэгов помогает нам избавиться от кэширования в браузере. Однако, помимо кэша браузера существует кэш прокси-сервера, который проводит анализ лишь HTTP-заголовков. К тому же может появится необходимость отключить кэширование не только самой html-страницы, но и ресурсов, находящихся на ней (jpg, swf ...).

Данную проблему можно решить например таким вот servlet-фильтром:

Чак Норрис

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


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.