【问题标题】:Howto deactivate caching inside a jsp page如何在jsp页面中停用缓存
【发布时间】:2008-10-02 12:07:28
【问题描述】:

我知道有一个 HTTP 响应标头指令可以禁用页面缓存:

Cache-Control:no-cache

我可以通过“手”修改表头:

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

但是有没有一种“好”的方法可以让 JSP 解释器在服务器响应中返回这个标题行?

(我检查了 指令。似乎没有类似的东西。)

【问题讨论】:

    标签: http jsp jstl cache-control no-cache


    【解决方案1】:

    同时添加

    response.addHeader("过期","-1"); response.addHeader("Pragma","no-cache");

    到你的头球并试一试。

    【讨论】:

    • 我尝试使用以下代码,它没有缓存页面但是当我点击浏览器返回按钮时,浏览器说这个文档不再存在,重新加载页面。为什么它不自动重新加载页面? &lt;% response.setHeader("Cache-Control", "no-cache"); response.setHeader("Cache-Control", "no-store"); response.setHeader("Pragma", "no-cache"); response.setDateHeader("Expires", 0); %&gt;
    【解决方案2】:

    如果您使用的是 servlet,那么我相信您在问题中发布的内容将是正确的方法。我不知道在 JSP 中有什么方法可以做到这一点。

    【讨论】:

      【解决方案3】:
      <?xml version="1.0"?>
      <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> 
       <jsp:scriptlet><![CDATA[
         response.setHeader("Cache-Control", "no-cache");
       ]]></jsp:scriptlet>
      </jsp:root>
      

      您必须将响应标头放在&lt;jsp:root /&gt; 中。另外,我建议它从您的 servlet 而不是 JSP 页面发送它。

      【讨论】:

        【解决方案4】:

        IIRC 某些浏览器在某些情况下可能会忽略缓存控制设置。对此的“安全”解决方法是始终获取带有新查询字符串变量(如时间)的页面(甚至是 AJAX 块)。

        【讨论】:

          猜你喜欢
          • 2014-11-19
          • 2010-12-29
          • 2018-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-26
          • 1970-01-01
          相关资源
          最近更新 更多