gpt4 book ai didi

jsp - JSP页面如何控制缓存?

转载 作者:行者123 更新时间:2023-12-04 16:56:46 25 4
gpt4 key购买 nike

我在 doFilter 中使用以下代码创建了一个 Servlet 过滤器:

HttpServletResponse httpResponse = (HttpServletResponse)response;

httpResponse.setHeader("Cache-Control","no-cache");
httpResponse.setHeader("Pragma","no-cache");
httpResponse.setDateHeader("Expires", 0);

chain.doFilter(request, response);

我想确保客户端没有缓存任何内容,并且每个请求(甚至来自浏览器后退按钮的请求)都被定向到服务器。

但是,即使在实现上述过滤器之后,一些页面也会被缓存(可以使用浏览器的后退按钮访问)。

和其他没有缓存的页面,显示 网页过期 Internet Explorer 中的错误。

最佳答案

首先,完整的集合是:

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-storemust-revalidate需要让它在每个 Firefox 下工作。

But, even after implementing the above filter, some pages are cached (accessible using browser's back button).



你是怎么测试的?这些 header 实际上会阻止浏览器从浏览器缓存而不是直接从服务器请求页面。最好的测试是有一个 Filter收听 /*并添加具有以下 flavor 的调试语句:
HttpServletRequest httpRequest = (HttpServletRequest) request;
String method = httpRequest.getMethod();
String URI = httpRequest.getRequestURI();
System.out.println(method + " request invoked on " + URI);

这应该打印实际请求。

还要确保您没有使用 HTML <meta> 覆盖 JSP 页面本身中的标题。标签。

And other pages that are not cached, show Web Page Expired error in Internet Explorer.



如果非缓存请求是 POST,您只能得到这个请求,而不是 GET要求。 GET请求将简单地再次从服务器而不是从浏览器缓存中请求。

关于jsp - JSP页面如何控制缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1953431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com