【发布时间】:2019-09-03 17:45:28
【问题描述】:
有很多类似的问题,但答案与我看到的不同。
这是我在 Chrome 中看到的:
在服务器上进行了更改,并通过 AJAX/Javascript 提醒客户端刷新页面。客户端 JS 尝试 location.reload(true)。它会刷新,但页面没有变化。我还包括以下内容:
window.applicationCache.swapCache();
location.reload(true);
这没有帮助,applicationCache 应该被弃用。
然后我尝试使用修改后的 URL(附加 ?id=122)刷新页面,但没有正确刷新。
我手动尝试了 F5 和 Control-F5。同样,没有任何变化。
在 Google Chrome 的开发者模式下,我手动选择了“Normal Relaod”和“Hard Reload”,但没有任何变化。直到我手动选择“Empty Cache and Hard Reload”,更新的页面才能正确显示。
如何在客户端 JS 中以编程方式使用“空缓存和硬重新加载”强制页面刷新?
【问题讨论】:
-
您确定更改是在 URL 中命名的文件中吗?也许它实际上是在其他一些资源中,比如它加载的
.js或.css文件。 -
chache busting 通过修改资源的 url 而不是页面来工作。示例:您的 js 或 css 可以通过在 js 或 css 文件的 url 中添加
?ver=123456来清除缓存,但这不适用于 .html 主页面。 -
我不认为 javascript 可以控制网络浏览器缓存,我不明白为什么应该这样做。但是如果你以后想摆脱这个问题,也许你可以尝试在服务器端更改
Cache-Control标头。 -
@Andrej - 根据documentaion 可以