簡體   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