Некоторые ресурсы сайта, такие как CSS- и Javascript-файлы сильно меняются при разработке новых версий этого сайта. При этом браузеры кешируют старые версии ресурсов, вызывая некорректную работу сайта. Как с этим бороться?
Как предотвратить кеширование браузером ресурсов изменяющихся в зависимости от версии?
3
Спросил
Лучший ответ:
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-фильтром:
Это не совсем то. Я не хочу полностью отключать кеширование, я хочу сделать так чтобы при выходе новой версии сайта браузер загрузил бы новые версии ресурсов. То есть чтобы браузер как-то «понял», что эти файлы изменились.