Sco*_*000 1 html caching angularjs
我有一个基于 angularjs 的 Web 应用程序,其中一些功能已部署给我需要隐藏的用户。我已经添加了隐藏它的代码,并成功验证了控件在适当的时候是隐藏的,但仍然有用户拥有旧版本的文件并且可以执行不需要的活动。有没有办法可以从服务器控制视图文件在客户端刷新?(测试人员能够清除他们的缓存,但这对现场用户来说是一种负担)
谢谢!斯科特
处理此问题的一种方法是对文件进行版本控制。例如,您的以下行index.html
<script src="abc.js" />
Run Code Online (Sandbox Code Playgroud)
可以改写为
<script src="abc.js?v1" />
Run Code Online (Sandbox Code Playgroud)
v1是当前文件版本,并且应该在更改时针对应用程序的每个部署进行abc.js更改。
由于index.html(初始页面)是从服务器获得的,更新到abc.js现在将反映在您的所有客户端上。
这需要在大型应用程序中实现自动化。您可以为此使用 Grunt。您可以参考 StackOverflow 上的以下答案来自动执行此操作:
更新
HTML 视图/模板在 AngularJS 中使用 $templateCache 进行缓存。基本上,当您第一次请求模板时,浏览器会从服务器请求模板并将其放入模板缓存中。对同一模板的任何后续请求都由模板缓存提供。
如果您不想缓存这些,您可以监听块$routeChangeStart内的事件app.run以删除特定模板。
app.run(function($rootScope, $templateCache) {
$rootScope.$on('$routeChangeStart', function(event, next, current) {
if (typeof(current) !== 'undefined'){
$templateCache.remove(current.templateUrl);
}
});
});
Run Code Online (Sandbox Code Playgroud)
参考:http : //opensourcesoftwareandme.blogspot.in/2014/02/safely-prevent-template-caching-in-angularjs.html
| 归档时间: |
|
| 查看次数: |
8075 次 |
| 最近记录: |