【问题标题】:Reload from server for all files从服务器重新加载所有文件
【发布时间】:2019-04-26 21:44:31
【问题描述】:
我知道可以使用location.reload(true) 从服务器强制重新加载。但是,假设我用它来刷新 index.html。如果 index.html 加载了一堆 javascript 文件,那么这些文件仍然来自我的缓存。有没有办法在请求期间忽略缓存?
我的用例是我正在对我的应用程序进行 AB 测试,并希望为用户提供一种在出现问题时返回旧版本的方法。但是有些 URL 是相同的,即使版本之间的文件不同。如果能够在 JS 中处理这个问题,而不是在新版本中更改每个 URL,那就太好了。
【问题讨论】:
标签:
javascript
browser-cache
【解决方案1】:
实际上至少有535 different ways 可以通过javascript 重新加载页面,仅供参考;)。
你试过把 document 放在前面吗? document.location.reload(true);
也试试这个其他选项:
window.location.href = window.location.href;
或
history.go(0);
当然,两者都是软重新加载,但似乎在某些情况下工作。
如果没有任何效果,您必须将随机数据附加到 url(如时间戳)以强制从服务器下载,绕过缓存。
【解决方案2】:
如果你想绕过浏览器从缓存中获取 js 文件,你需要从服务器中获取不仅仅是 script.js 之类的文件,而是 script.12345.js 当你在服务器上更新你的文件时,你改变文件的哈希数让我们说 script.54321.js 和浏览器理解文件不同,必须重新下载。您实际上可以为此目的使用 Webpack 来实现自动化。在输出而不是 {filename: bundle.js} 你写 {filename: bundle.[hash].js}