Я хочу удостовериться, что ответ моего servet никогда не кэшируется broswer, таким, что, даже если два идентичных запроса выполнены (на расстоянии в одну наносекунду), с сервером всегда связываются. Это корректный способ достигнуть этого:
class MyServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
response.setHeader("Cache-Control", "no-cache");
}
}
Спасибо, Дон
Нет, это не правильный путь. Вот правильный способ:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
Вы, вероятно, увидите, что кто-то другой предлагает другие записи / атрибуты, но они совершенно не имеют отношения к делу, если хотя бы упомянуто вышеупомянутое.
Не забудьте очистить кеш браузера перед тестированием после внесения изменений.
Согласно Microsoft, эти заголовки необходимы для IE:
Пример:
Pragma: no-cache
Cache-Control: no-cache
Expires: -1
Мы используем:
// HTTP 1.1
response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
// HTTP 1.0
response.setHeader("Pragma", "no-cache");