2017-02-15 46 views
-1

注意:此問題不是類似問題的重複,其中答案要求將javascript/php生成的隨機數查詢添加到圖像名稱的末尾。正如我在原始文章中解釋的,我無法在代碼中使用JavaScript。用戶在做HTML的一次複製並粘貼到不能運行JavaScript從緩存中停止圖像而不更改圖像名稱/參數


我運行產生圖像文件對於出現在某些尋寶目標的進度用戶提供Web服務的位置(尋寶只是一種戶外愛好。)圖像坐在我的服務器上。然後,該服務向用戶提供HTML代碼以引用圖像,並且他們可以將該HTML複製/粘貼到其他網站,例如他們的個人博客或其在主要的地理定位網站上的個人資料。

這個想法是,他們可以定期到我的網站並生成新的更新圖像。這些圖像在服務器上仍具有相同的名稱。這樣,他們以前複製/粘貼的HTML仍然有效......它引用了相同的圖像,但這些圖像已更新。

但是......緩存是一個問題。通常,我會生成新圖像,但用戶仍然可以在其個人博客或舊圖像緩存的任何位置看到舊圖像。

  • 我可以給用戶在圖片src上粘貼一個隨機查詢參數的HTML代碼,但這不會幫助,因爲他們只是一次性複製/粘貼HTML。隨機查詢參數只會生成一次,第一次加載後,圖像將被緩存,不會成爲新的隨機查詢參數。
  • 每次讀取HTML時,我都無法給用戶提供包含javascript的HTML代碼以生成隨機查詢參數,因爲他們正在將此HTML代碼複製到通常無法運行腳本的字段中。
  • 我無法嘗試禁用緩存,因爲它們將HTML粘貼到其他站點。

有什麼我可以做的,以禁止從純HTML的這些圖像的緩存?任何可以使用的img屬性?任何想法來解決這個棘手的問題?

回答

-1

您可以設置HTTP標頭以防止緩存。

Cache-Control: no-cache, no-store, must-revalidate 
Pragma: no-cache 
Expires: 0 

我相信這也是通過設置元內容實現:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/> 
<meta http-equiv="Pragma" content="no-cache"/> 
<meta http-equiv="Expires" content="0"/> 

來源:

Prevent caching of HTML page

How to control web page caching, across all browsers?

+0

謝謝@Mark,但我無權訪問將保存我的HTML代碼的頁面的,因此我無法設置頁面的標題或元標記。用戶將會將包含img標籤的我的html代碼粘貼到博客文章或其他字段中。 –

0

創建

<script> 

tage在html塊內,並使用jvascript Math.random()方法創建一個隨機數來爲該「圖像src上的隨機查詢參數」提供參數,這使得圖像的所有請求都是唯一的,阻止緩存。

+1

感謝@Meysam,但從原帖:「我不能給用戶包含javascript的HTML代碼,以便每次讀取HTML時生成隨機查詢參數,因爲它們將此HTML代碼複製到通常無法運行的字段中腳本「。澄清 - 他們正在做一次HTML的副本...並且HTML不能有javascript。 –