0

我有一个返回这个 html 5 的 Jsp:

<html>
    <head>
        <title>Application</title>
        <!-- Some script includes here -->
    </head>
    <body>
        <!-- My html here -->
    </body>
</html>

目前用户需要禁用缓存到浏览器中,否则每次都会重新加载旧页面。

我试图以这种方式强制使用 scriptlet 不缓存,但没有成功:

<%
response.addHeader("Cache-Control","no-cache");
response.addHeader("Expires","-1");
response.addHeader("Pragma","no-cache");
%>

事实上,scriptlet 不是一个好的解决方案,有没有什么方法可以在 JSP 中禁用缓存?

4

3 回答 3

0
Cache-Control

上面的标头必须是跨浏览器的。可能会导致问题

尝试

response.addheader('Cache-Control: no-cache, no-store, must-revalidate');
于 2013-09-24T13:04:28.087 回答
0

如果您使用的是 Apache Tomcat,请更改 context.xml

<Context cachingAllowed="false">

您可以在http://tomcat.apache.org/tomcat-6.0-doc/config/context.html阅读文档, 其中说明

缓存允许

如果此标志的值为 true,则将使用静态资源的缓存。如果未指定,则标志的默认值为 true。

于 2013-09-24T13:05:27.840 回答
0

鉴于您正在使用 jsp 文件,您正在 Web 容器中运行它。我们通过使用 ajavax.servlet.Filter来设置标头值来做到这一点。

我不知道任何已经这样做的开源过滤器,但自己编写并不难。

我们为 HTTP/1.0 设置的标头:

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

我们为 HTTP/1.1 设置的标头:

httpResponse.setHeader("Cache-Control", "private,no-store,no-cache");
于 2013-09-24T13:06:02.717 回答