2012-07-03 42 views
0

更新文本文件的內容時,它不會更新。相反,我必須刪除我的Google Chrome中的所有緩存和內容,才能刷新它。但是,它在使用Apache服務器(本地主機)時工作正常。從文本文件獲取最新數據

我試過添加一個:<meta http-equiv="expires" content="Mon, 26 Jul 1997 05:00:00 GMT"/> <meta http-equiv="pragma" content="no-cache" />,但問題仍然存在。

function MakeRequest() 
{ 
    var xmlHttp = getXMLHttp(); // just a basic XML request 
    xmlHttp.onreadystatechange = function() 
    { 
    if(xmlHttp.readyState == 4) 
    { 
     HandleResponse(xmlHttp.responseText); 
    } 
    } 
    xmlHttp.open("GET", "counter.txt", true); 
    xmlHttp.send(null); 
} 

我有另一個JavaScript只是打印這一個div:(計時與一些延遲運行)

document.getElementById('counterHolder').innerHTML = response; 

Click here if you need to see the webpage live.

+0

你有沒有檢查過你的javascript控制檯?我不斷收到'號碼未定義';你用變量'數字'做什麼? – Daedalus

+0

現在檢查 - 這是一小段代碼,我不再使用了。 – user1431627

+0

那爲什麼還在那裏?我注意到有時候,如果函數中有錯誤,它會完全停止執行函數;如果它不再被使用,你能刪除它嗎? – Daedalus

回答

2

這似乎是一個緩存的問題。我無法準確地描述它爲什麼會發生這種情況,但根據我的經驗,在獲取請求中將隨機字符串添加到網址的末尾應該可行。我會建議像下面這樣的東西:

xmlHttp.open("GET", "counter.txt?" + Math.random(), true); 
+0

+1,但我認爲時間戳更好。 – lbstr

+0

謝謝。這工作完美。接受的答案。 – user1431627

1

我相信類似這篇文章會幫助你。它的目的是鏈接到一個文件,每次頁面重新加載時間將被視爲一個新的鏈接,但是,同樣也適用於您的情況:

HTML Link that bypasses Cache

+0

基本上,鏈接的帖子說你只需要添加一個時間戳作爲查詢字符串參數。所以,就像:'url = url +「?q =」+ new Date()。getTime();'。我過去曾經這樣做過。我假設有一種方法可以配置緩存設置來解決問題,但我認爲這樣更快,更不突兀。 – lbstr

0

我建議使用jQuery或其他像樣的JavaScript庫。如果你這樣做,然後檢查在jQuery中有一個緩存選項。

試圖解決您的問題,因爲它是,試試這個..

function MakeRequest() 
{ 
    var xmlHttp = getXMLHttp(); // just a basic XML request 
    xmlHttp.onreadystatechange = function() 
    { 
    if(xmlHttp.readyState == 4) 
    { 
     HandleResponse(xmlHttp.responseText); 
    } 
    } 
    var timestamp_since_epoch = new Date().getTime(); 
    xmlHttp.open("GET", "counter.txt?"+timestamp_since_epoch, true); 
    xmlHttp.send(null); 
} 

上面呢,是什麼產生從紀元時間戳,並將其添加爲參數AJAX調用。