У меня есть Jsp, который возвращает этот html 5:
<html>
<head>
<title>Application</title>
<!-- Some script includes here -->
</head>
<body>
<!-- My html here -->
</body>
</html>
В настоящий момент пользователю необходимо отключить кеширование в браузере, иначе старая страница перезагружается каждый раз.
Таким образом я попытался принудительно отключить кэширование с помощью скрипта, но безуспешно:
<%
response.addHeader("Cache-Control","no-cache");
response.addHeader("Expires","-1");
response.addHeader("Pragma","no-cache");
%>
Asde тот факт, что скриптлет не будет хорошим решением, есть ли способ, который работает в JSP, чтобы отключить кеширование?
Cache-Control
Вышеупомянутый заголовок должен быть перекрестным браузером. Мощь, которая вызывает проблемы
Пытаться
response.addheader('Cache-Control: no-cache, no-store, must-revalidate');
Учитывая, что вы используете jsp файлы, вы запускаете это в веб-контейнере. Мы делаем это с помощью javax.servlet.Filter
для установки значений заголовка.
Я не знаю никаких фильтров открытых источников, которые уже делают это, но писать о себе не так сложно.
Заголовки, которые мы установили для HTTP/1.0:
httpResponse.setDateHeader("Expires", 0L);
httpResponse.setHeader("Pragma", "no-cache");
Заголовки, которые мы установили для HTTP/1.1:
httpResponse.setHeader("Cache-Control", "private,no-store,no-cache");
Если вы используете Apache Tomcat, измените context.xml
<Context cachingAllowed="false">
Вы можете прочитать документацию по адресу http://tomcat.apache.org/tomcat-6.0-doc/config/context.html, в которой говорится о
cachingAllowed
Если значение этого флага истинно, будет использоваться кеш для статических ресурсов. Если не указано, значение по умолчанию для флага - true.