【发布时间】:2018-07-27 07:02:17
【问题描述】:
我想以编程方式清除浏览器缓存。我这样做是因为我部署了新版本的应用程序,但浏览器从缓存中获取旧版本和内容。但我想在浏览器获取新版本时清除缓存并从服务器加载最新的应用程序。
我也使用了location.reload(true);,但它并没有清除缓存,只是重新加载当前页面。
【问题讨论】:
标签: javascript jquery angularjs caching browser
我想以编程方式清除浏览器缓存。我这样做是因为我部署了新版本的应用程序,但浏览器从缓存中获取旧版本和内容。但我想在浏览器获取新版本时清除缓存并从服务器加载最新的应用程序。
我也使用了location.reload(true);,但它并没有清除缓存,只是重新加载当前页面。
【问题讨论】:
标签: javascript jquery angularjs caching browser
您可以使用版本技巧清除浏览器缓存
例如,
<script src="custom.js?version=1.1.1"></script>
只需在文件类型末尾添加虚拟版本。它将重新加载代码
【讨论】:
您无法使用 Angular 或 JQuery 真正清除缓存。一种方法是强制您的浏览器请求新资源。
一种方法是使用 gulp-rev。
【讨论】:
你不能通过 JavaScript 做到这一点。您可以执行以下操作:
将一些可变字符串附加到内容网址的末尾。示例:
//example.com/script.js?version=1.0
或
var timestamp = new Date().getTime()
var url = "//example.com/script.js?ts=" + timestamp
这实际上使浏览器误以为您尝试加载的 url 是一个新的 url,它会跳过在缓存中查找它。
Timestamp 方法确实有一个缺点,它永远不会使用浏览器缓存。
此外,请确保您的 HTML 文件设置了正确的内容标头,以便 html 本身不会被缓存。查看How to control web page caching, across all browsers? 了解有关缓存控制标头的详细信息。
【讨论】: