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

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

class MyServlet extends HttpServlet {

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

Спасибо, Дон

22
задан Dónal 5 August 2010 в 08:41
поделиться

3 ответа

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

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.

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

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

См. Также:

61
ответ дан 29 November 2019 в 03:42
поделиться

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

  • Кэш -Control ;
  • Pragma ;
  • Expires (должно быть отрицательным);

Пример:

Pragma: no-cache
Cache-Control: no-cache
Expires: -1
1
ответ дан 29 November 2019 в 03:42
поделиться

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

    // HTTP 1.1
    response.setHeader("Cache-Control", "private, no-store, no-cache, must-revalidate");
    // HTTP 1.0
    response.setHeader("Pragma", "no-cache");
3
ответ дан 29 November 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: