【发布时间】:2015-05-03 20:31:26
【问题描述】:
项目在Spring框架上运行,处理请求的Handler类扩展了MultiActionController。
我添加了以下代码来设置响应头中的缓存控制参数。
httpServletResponse.addHeader("Cache-Control", "no-cache, no-store, must- revalidate,max-age=0,private,pre-check=0,post-check=0");
httpServletResponse.addHeader("Pragma", "no-cache");
httpServletResponse.addDateHeader("Expires", -1);
甚至,在 JSP 页面中,我包括以下几行:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Cache-Control" content="max-age=0" />
<meta http-equiv="Cache-Control" content="must-revalidate" />
<meta http-equiv="Cache-Control" content="private" />
<meta http-equiv="Cache-Control" content="pre-check=0" />
<meta http-equiv="Cache-Control" content="post-check=0" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
当我使用 Firebug 在火狐上调试页面时,响应头显示如下:
缓存选项卡如下:
这种情况只发生在一个页面上,其余页面没有被缓存。这是什么原因?请帮我解决一下。
【问题讨论】:
-
是什么让您相信它仍在缓存中。 Reponse Header 和 Cache 选项卡都有过去的 Expires。所以它总是从服务器而不是浏览器加载。您还有其他观察结果吗?
-
我在 Chrome 浏览器 unser chrome://cache/ 上检查了相同的内容,我可以在那里看到缓存的 JSP 页面。 :(点击浏览器后退按钮,缓存页面正在加载(未发送单独的请求)
-
我有同样的问题,但它在我的情况下运行。 nwys 尝试将 Pragma 大写 P 更改为 pragma