【问题标题】:JSP page cached even after providing cache parametersJSP 页面即使在提供缓存参数后也被缓存
【发布时间】: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

标签: java spring jsp caching


【解决方案1】:

看看https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ。这是重要的部分:

mozilla 缓存保存用户通过 HTTP 下载的所有文档。 起初这可能看起来很奇怪。但是,这样做是为了使访问 可用于后退/前进、保存、作为源查看等的文档。 无需额外访问服务器。它同样 改进了缓存内容的离线浏览。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多