繁体   English   中英

在JSP中刷新图像/避免缓存

[英]Refresh Image in JSP/ Avoiding cache

我正在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页面。 我正在使用上面的代码,但仍然仅在下一页加载时才获得缓存(旧)图像。 我要去哪里错了。

请帮忙。

谢谢

由于使用的是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响应,但是我想这不是这个问题的重点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM