發生意外,並且某個HTML頁面被設置爲由瀏覽器緩存。我們不想更改該網頁的網址,因爲其他各方都依賴該網址(包括SEO)。如何強制瀏覽器重新加載緩存的URL而不更改URL
有沒有辦法讓儘可能多的客戶端重新加載該頁面?客戶經常在網站上瀏覽時訪問該頁面,所以我們經常能夠在他們遇到問題頁面之前向他們發送一些新的JavaScript(或任何其他資源)。也許有一個JavaScript技巧來強制重新加載?!
發生意外,並且某個HTML頁面被設置爲由瀏覽器緩存。我們不想更改該網頁的網址,因爲其他各方都依賴該網址(包括SEO)。如何強制瀏覽器重新加載緩存的URL而不更改URL
有沒有辦法讓儘可能多的客戶端重新加載該頁面?客戶經常在網站上瀏覽時訪問該頁面,所以我們經常能夠在他們遇到問題頁面之前向他們發送一些新的JavaScript(或任何其他資源)。也許有一個JavaScript技巧來強制重新加載?!
代碼片斷下面將失效與URI相同頁面的緩存條目uriOfCachedPage
:
var xhr = new XMLHttpRequest();
xhr.open("GET", uriOfCachedPage, true);
xhr.setRequestHeader("Cache-Control", "max-age=0");
xhr.send();
您需要將此代碼注入到用戶可能會獲得的腳本或HTML頁面中。
欲瞭解更多信息,請參閱MDN上的XMLHttpRequest頁和RFC 7232超文本傳輸協議(HTTP/1.1)中的Request Cache-Control Directives部分:緩存。
您還可以在cookie或localStorage中存儲cachedPageReloaded
標誌,並且只有在之前未使其無效時才使緩存條目無效。在MDN上檢查Document.cookie和Window.localStorage頁面。
您可以添加時間戳在您的網址的結尾查詢字符串:
var url = "http://yoursite.com/your.html?r=" + (new Date()).getTime();
您可以調用沒有cache選項不更改URL AJAX請求,並沒有刷新頁面或者:
$.ajax({
url: "your.html",
cache: false, //<== don't cache!
type: "GET",
dataType: "json",
success: function(data, textStatus) {
$("#body").html(data);
}
});
尋找JavaScript解決方案?
window.location.reload(true);
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
從服務器端添加這些頭
從服務器發送頁面時,您可以設置'緩存控制'標題,檢查出這個答案(http://stackoverflow.com/questions/49547/how-to-control-web-page-緩存 - 所有瀏覽器)列出瞭如何做到這一點。我不知道如何強制人們刪除緩存,如果它已被緩存但 – George