Когда я устанавливаю статические ресурсы, такие как js, css, шаблоны на моем веб-сервере, я забываю установить для них период кеширования. по умолчанию веб-сервер устанавливает его "кеш навсегда" (это сервер tomcat и весенний mvc)
<mvc:resources mapping="/resources/**" location="/resources/" />
если не указать cache-period
тогда сервер будет отправлять заголовки типа "кешировать его навсегда". теперь я пробую разные способы решить эту проблему:
mvc:resources mapping="/static/**" location="/resources/" cache-period="10800"
но это не помогает (я думаю, что браузер кэширует всю html-страницу, но это не так)
Я пытаюсь принудительно перезагрузить страницу с помощью JS:
location.reload (правда)
но это мало помогает
как заставить браузер перезагружать кешированные файлы? PS Я не отправляю кеш файлы для кэширования моих html-страниц
Вы можете добавить номер версии к URL-адресу
http://mydomin.com//file.css
Например;
<html>
<head>
<link href="/file.css" type="text/css" rel="stylesheet"/>
<head>
<body></body>
</html>
Я знаю, что у вас нет jQuery или Ajax, помеченных этим, но самый простой способ перезагрузить ваши.js файлы - это использовать функцию jQuery getScript(), которая является просто ярлыком для выполнения запроса ajax http.
$.getScript('../path_or_URL_to_your_js_file.js');
Это загружает внешний ресурс с добавленной к нему меткой времени, поэтому по умолчанию она будет загружаться с сервера, а не из кеша. Вам просто нужно убедиться, что ваш jquery включен, прежде чем вы вызываете функцию getScript.
Чтобы предотвратить кешированные версии ваших.css файлов, вы можете использовать jQuery/ajax для динамического создания элементов ссылок в заголовке html после загрузки страницы, что предотвратит загрузку кэшированного ресурса.
$('<link/>', {
rel: 'stylesheet',
type: 'text/css',
href: 'path_to_the.css'
}).appendTo('head');