发生意外,并且某个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