【问题标题】:Refresh Image in JSP/ Avoiding cache在 JSP 中刷新图像/避免缓存
【发布时间】:2013-07-05 09:43:06
【问题描述】:

我正在开发 web 项目,我必须在加载时生成图像并将其显示在 JSP 页面上。现在的问题是我必须使用相同的图像名称,因此浏览器总是使用缓存图像而不是新图像。

Display.jsp

<html>
  <head>  
   <script type="text/javascript">
      updateImage(){
          var img1 = document.getElementById("text");
          img1.src="sun.png?time=".new Date().getTime();
      }   
   </script>
  </head> 
  <body onload="updateImage()">
          <form action="com.CheckName" method="get">
              <input type="button" value="submit" name="submit" /> 
              <img src="sun.png" id="text">
          </form>
  </body>
</html>

通过单击按钮,再次加载相同的 jsp 页面。 我正在使用上面的代码,但我仍然只在下一页加载时获得缓存(旧)图像。我哪里出错了。

请帮忙。

谢谢

【问题讨论】:

    标签: javascript image jsp webpage


    【解决方案1】:

    由于您使用的是 JSP,因此您可以使用 System.currentTimeMillis() 附加当前时间。

    替换这个:

    <img src="sun.png" id="text">
    

    用这个:

    <img src="sun.png?time=<%=System.currentTimeMillis()%>" id="text">
    

    我不建议您一直避免缓存它。您可以不附加当前时间,而是附加当前版本号(或上次更改的时间),这样用户就不必每次打开此页面时都重新下载。


    您也可以使用 javascript 来执行此操作,但您的没有工作,因为它有错误。使用+ 而不是. 来连接字符串。

    img1.src="sun.png?time=".new Date().getTime(); //wrong

    img1.src="sun.png?time=" + new Date().getTime(); //ok!

    请注意,因为onload 仅在所有内容(包括图像)已加载时才会执行。这意味着您将在打开页面时获得缓存版本(但非缓存版本将在一段时间后加载)。


    还有其他方法,例如为 HTTP 响应设置无缓存标头,但我想这不是这个问题的重点。

    【讨论】:

      猜你喜欢
      • 2010-11-19
      • 2010-11-21
      • 2012-07-16
      • 2018-02-14
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 2018-02-21
      相关资源
      最近更新 更多