我需要使用 JavaScript 重新加载页面,并确保它不会从浏览器缓存中提取,而是从服务器重新加载页面。[因为页面的元素将在此期间发生变化]
在 IE 和 FF 上,我发现以下代码运行良好;
window.location.reload(true);
但是它不适用于 Chrome 或 Safari。
我尝试了以下方法,但也无济于事;
window.location.replace(location.href);
document.location.reload(true);
document.location.replace(location.href);
这个问题有解决方案吗?
发现
经过调查,我发现这个问题是 HTTP 协议处理;
- Chrome 发送带有
Pragma: no-cache
HTTP 字段的请求 - 服务器响应
Last-Modified: DATE1
字段 - JS 用于
location.reload(true)
强制从服务器重新加载而不是缓存 - Chrome 发送带有
If-Modified-Since: DATE1
字段的请求 - 服务器响应
HTTP Status 304 Not Modified
服务器应用程序因没有注意到动态页面内容中的状态变化而导致错误,因此没有返回200
. If-Modified-Since
但是,Chrome/WebKit 是唯一在调用JS 时发送字段的浏览器location.reload(true)
。
我想我会把我的发现放在这里,以防其他人遇到同样的问题。