将web标记为过时,以强制浏览器重新加载其内容
Mark the web as obsolete to force browsers reload its content
我在一个内置于angular的仪表板中工作,该仪表板攻击用java实现的后端。
我以前从未使用过angularjs。
当在前端实现并部署新功能时,人们需要在mac中"硬刷新",对于Chrome,Cmd+Shift+R,才能看到新功能。
到目前为止,我在index.html 的元中添加了这个
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
<meta http-equiv="CACHE-CONTROL" content="NO-STORE">
但它不起作用。
你知道angular是否有一些指令,一些版本控制,我可以用来告诉浏览器,是时候重新加载内容了吗?
谢谢!!!
我用来确保浏览器获取资源更新副本的最直接的方法是向URL附加一个唯一的querystring值。当需要通知浏览器重新提取时,只需更改querystring值即可。
根据您的服务器技术(我对JSP不是很熟悉),这种语法会略有不同,但在ASP.NET中,它看起来像:
<script type="text/javascript" src="myfile.js?v=<%= Conf.StaticKey %>"></script>
在你的代码中,你可以指向你的应用程序配置,并从中提取一个密钥,然后在需要新版本时在配置中更改该密钥:
public static class Conf {
public static string StaticKey {
get { return ConfigurationManager.AppSettings["staticKey"]; }
}
}
<appSettings>
<add key="staticKey" value="B0DFAB04-33DC-40E7-9E9F-6619CA6441EA" />
</appSettings>
当config值更改时,呈现的HTML将显示不同的查询字符串,因此浏览器将重新提取javascript文件。实际的查询字符串值将被忽略。
为了避免资源缓存(如JS或CSS文件),您可以将angular应用程序的版本号添加到它们的url 中
http://example.com/v1.2.3/js/myjsfile.js
这样,一旦你的应用程序的新版本发布,url就会更改,浏览器就会再次下载该文件。
为了进行开发,请考虑为此类url添加时间戳,而不是版本号
http://example.com/dev/js/myjsfile.js?123124325435
如果您想避免缓存HTML文件,请考虑不向客户端发送缓存标头
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
在这里,你可以找到一篇关于它的完整文章(如何在所有浏览器中控制网页缓存?)
请注意,在生产时禁用缓存可能会使服务器过载。
相关文章:
- 创建新数据和加载现有数据需要单独的视图吗
- 钛 - HTTPClient:打开新的控制器加载
- 保持 JavaScript 在浏览器控制台中运行,即使在新的页面加载之后也是如此
- 路由到新页面时加载不起作用
- 如何在新窗口完成加载后执行某些内容
- 使用新标题重新加载 html 页面
- Primefaces在打开新页面时加载数据消息
- Wordpress音频播放器和平滑状态.在新页面重新加载播放器时调用什么回调函数
- 用新数据重新加载renderer3d
- 文本不被渲染后,新的页面加载- JQuery移动
- 需要在新标签中加载pdf/doc文件,而不是下载,只是想在浏览器中阅读
- 用新参数重新加载页面
- Js和CSS不检测新页面何时加载
- 在新页面上加载一个flash视频,它在上一页上的位置
- 在新窗口中加载代码编写器视图
- 在控制台中使用新脚本重新加载页面
- 如何在加载新页面后加载AJAX数据
- 如何使用jQuery在新窗口中加载页面,然后关闭它们
- Jquery没有看到新的HTML加载到对话框中
- 无法用新值重新加载JGrid