【问题标题】:JSP Page Cache in Internet ExplorerInternet Explorer 中的 JSP 页面缓存
【发布时间】:2013-10-31 17:02:17
【问题描述】:

在我的一个 Jquery 插件应用程序中,我有一个打开 JSP 页面的窗口,其中显示来自数据库的行。

在 Internet Explorer 中,除非我在第一次启动后运行应用程序,否则此页面始终不会显示数据库中的所有行,直到我在 Fiddler 插件中Clear Cache。执行此操作后,所有行都正确显示,并且在某些情况下再次出现此问题。

在这个 JSP 页面中,我有以下内容,但没有帮助。

 <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
 <META HTTP-EQUIV="Expires" CONTENT="-1">

有一个对servlet的调用,但是没有从JSP调用doGet方法。

我该如何解决这个问题?此问题仅在 Internet Explorer 中发生

【问题讨论】:

    标签: jquery-ui internet-explorer jsp servlets browser-cache


    【解决方案1】:

    您可以尝试在 HTML 标记中进行而不是在 JSP 中进行:

     response.setHeader("Cache-Control", "no-cache");
    

    尝试其他方法,例如:

     response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
    

    如果这只是作为用户的您的问题,请确保将 IE 设置为“每次访问页面”页面的新版本,而不是默认设置“自动”不起作用很好。 (在 IE8 中,工具->Internet 选项->浏览历史记录部分,设置按钮。)

    此外,当通过 Ajax 调用页面或使用 Javascript 打开窗口时,您可以向 URL 添加一个额外参数,该参数只是一个时间戳或随机数,以诱使 IE 将请求作为新请求处理。

    【讨论】:

    • 感谢您指出这一点。我已经尝试过这篇文章stackoverflow.com/questions/49547/… 中提到的。我使用了 HML 选项,由于它没有缓存,我仍在测试。顺便说一句,HTML 还是 JSP 优先?以及您提到的在 URL 中添加额外参数的内容,您有这方面的示例吗?
    • 当您通过 JSP 设置缓存时,它作为 HTTP 标头的一部分发送,这些标头在解析 HTML 之前被读取,我认为标头优先于 HTML 元标记。添加额外的参数,我的意思是如果你的 url 是 go.jsp?id=1 然后让它 go.jsp?id=1&trick=12345678 其中 12345678 是一个时间戳或随机数,你可以在 Javascript 中生成
    • developerwjk 我会尝试这种方法。谢谢
    • 另一个问题是随机数生成必须使用javascript?我可以使用Java生成随机数并传入参数字符串吗?
    • 如果您使用 Javascript 打开页面或执行 AJAX 调用,则使用 Javascript 执行此操作是有意义的。当然,对于站点中的链接,您可以根据需要在 JSP 中的链接上附加类似这样的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多