2013-12-15 51 views
4

對於聖誕節的十二天,我正在運行這個簡單的家庭網站。作爲它的一部分,我每天編輯一個文本文件,每天都會給出不同的答案/內容。那麼我有一個問題,我必須告訴每個人刪除緩存以獲取新信息。我從來沒有這樣做過。我只是幾乎沒有添加這兩個聲明。停止瀏覽器緩存文本文件

<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" /> 

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1. 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); 

發現How to control web page caching, across all browsers?

我測試,一切都仍然加載罰款,但我不希望通過改變實際內容到明天進行測試。我的問題是,有沒有什麼辦法,以確保瀏覽器不緩存我在使用這段JavaScript代碼

function readInFile(file) 
{ 
    var rawFile = new XMLHttpRequest(); 

    rawFile.open("GET", file, true); 
    rawFile.onreadystatechange = function() 
    { 
     if (rawFile.readyState === 4) 
     { 
      if (rawFile.status === 200 || rawFile.status == 0) 
      { 
       parseFile(rawFile.responseText, document.getElementById("answerText").value) 
      } 
     } 
    }; 
    rawFile.send(null); 
} 

我不希望瀏覽器停止高速緩存HTML中使用我拉文本文件/ JS,但繼續緩存文本文件。我現在有什麼阻止瀏覽器這樣做?我從來沒有像這樣的問題>我這次也使用了HTML5 Boilerplate,只是爲了嘗試一下,如果這有所作爲。我最終刪除了很多但它。

回答

6

Cache-busting

添加一個隨機參數的URL的末尾,就像當前的時間戳。使它看起來像:

http://yourdomain.com/path/to/file.txt?t=1873261823 

您可以使用new Date().getTime()或更近Date.now()或推出自己的隨機數發生器的參數值。

+0

謝謝,應該這樣做。我也喜歡這個鏈接。 –

+0

我還沒有嘗試過這種文本文件,但我已經爲CSS,並在一些瀏覽器,它仍然緩存它,無論查詢字符串。 – Ben

0

你可以調用每個文件的東西不同。

http://example.com/file123809.txt 

如果你願意,你可以在那裏混合一些PHP。

http://example.com/file<?php echo time(); ?>.txt 

有明顯得到一個時間戳,甚至只是一個唯一的號碼的其他方式,但我覺得我列出的方式是最方便的,由於PHP是服務器端,可以在所有設備上工作。