Подтвердить что ты не робот

Кэширование ответа HTTP

Я хочу убедиться, что мой запрос серва никогда не кэшируется броузером, так что даже если два идентичных запроса сделаны (наносекунда отдельно), сервер всегда связывается. Это правильный способ достичь этого:

class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        response.setHeader("Cache-Control", "no-cache");
    }
}

Спасибо, Дон

4b9b3361

Ответ 1

Нет, это не правильный путь. Вот правильный способ:

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.

Вероятно, вы увидите, что кто-то еще предлагает другие записи/атрибуты, но они совершенно неактуальны, когда упоминаются, по крайней мере, упомянутые выше.

Не забывайте очистить кеш браузера перед тестированием после изменения.

См. также:

Ответ 2

Мы используем:

    // HTTP 1.1
    response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
    // HTTP 1.0
    response.setHeader("Pragma", "no-cache");

Ответ 3

Согласно Microsoft, эти заголовки необходимы для IE:

  • Cache-Control;
  • Прагма;
  • Истекает (это должно быть отрицательно);

Пример:

Pragma: no-cache
Cache-Control: no-cache
Expires: -1