Для начала, полный набор:
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpResponse.setDateHeader("Expires", 0); // Proxies.
no-store
и must-revalidate
необходимы, чтобы заставить его работать под каждым Firefox.
Но даже после реализации вышеуказанного фильтра некоторые страницы кэшируются (доступны с помощью кнопки назад браузера).
Как вы это проверили? Эти заголовки фактически не позволяют браузеру запрашивать страницу из кэша браузера, а не напрямую с сервера. Лучший тест - иметь Filter
для прослушивания /*
и добавить оператор отладки в виде:
HttpServletRequest httpRequest = (HttpServletRequest) request;
String method = httpRequest.getMethod();
String URI = httpRequest.getRequestURI();
System.out.println(method + " request invoked on " + URI);
Это должно напечатать фактические запросы.
Также убедитесь, что вы не переопределяете заголовки на самой странице JSP с помощью тегов HTML <meta>
.
И другие страницы, которые не кэшируются, показывают Веб-страница просрочена Ошибка в Internet Explorer.
Вы можете получить это, только если не кэшированный запрос был POST
запросом, а не GET
запросом. GET
запросы будут просто запрашиваться снова с сервера, а не из кеша браузера.