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

时间:2013-07-05 00:58:00

标签: javascript image jsp webpage

我正在开发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页面再次加载。 我正在使用上面的代码,但我仍然只在下一页加载时缓存(旧)图像。哪里出错了。

请帮忙。

由于

1 个答案:

答案 0 :(得分: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响应中设置no-cache标头,但我想这不是这个问题的重点。

相关问题