HTTP 响应缓存

2022-09-02 00:10:24

我想确保我的 servet 的响应永远不会被浏览器缓存,这样即使发出了两个相同的请求(相隔一纳秒),也始终会联系服务器。这是实现此目的的正确方法吗:

class MyServlet extends HttpServlet {

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

谢谢 唐


答案 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");