你聽起來像您有您的JavaScript無法得到它加載通過Ajax的數據保護方法的更新版本,是正確的?例如,如果兩個Ajax調用嘗試加載'data.txt',則第二個調用僅使用緩存版本。
您也可能無法加載您的腳本本身的新版本。
解決這兩個問題的方法是隨機生成的查詢字符串添加到您的腳本源和你的Ajax來源。
例如,做一個腳本加載主腳本,像這樣:
/* loader1.js */
document.write('<script src="mainjavascript.js?.rand=', Math.random(), '"></script>');
而在你的HTML,只是做
<script src="loader1.js"></script>
同樣的方法適用於JavaScript的Ajax請求,以及。假設「客戶端」是一個新的XMLHttpRequest()對象,並已正確設置了一個readystatechange等功能,那麼您只需添加相同的查詢字符串,像這樣:
request = client.open('GET', 'data.txt?.rand=' + Math.random(), true);
request.send();
您可能使用一個庫來完成你的Ajax請求,所以它更容易。只要指定數據URL爲'data.txt?.rand=' + Math.random()
,而不是僅僅「的data.txt」
不知道你得到什麼。 Ajax的全部用途是將內容加載到DOM中,而不用刷新頁面。如果你確實想刷新頁面,爲什麼不只是做一個http get或post請求,沒有ajax? – Ryan
您提供的鏈接提供了幾種方法在需要時打破緩存。使用其中之一而不是刷新頁面。您似乎擔心資源的新「版本」,可以通過刷新頁面來檢索這些資源。更改URL是欺騙瀏覽器來處理它,或正確配置服務器的正確方法 – Ian
@ryan也許我的措辭很糟糕。用戶正在向服務器發送大量Ajax請求。但是,如果服務器行爲發生變化,那麼向服務器發出請求的每個人都會突然發生頁面損壞,並且沒有說明頁面被破壞的原因。如果他們刷新他們的瀏覽器,該網站將被修復,但用戶不知道。我想知道如果服務器和客戶端不同步,是否有刷新頁面的好方法。 – Holtorf