防止角度js应用程序中的缓存

时间:2016-03-23 06:30:53

标签: javascript html angularjs css3 caching

我正在使用angular js app,它是一个单页应用,我们正在使用路由来切换视图。当索引页面第一次被点击时,所有文件(样式表和javascripts)只被加载一次,并且假设我在其中一个样式表或javascript文件中更新,那么它将使用旧版本的文件,而不是更新的文件。

我想强制客户端浏览器在服务器文件中有更新时获取最新文件,而不从缓存中取出它而不刷新页面(index.html)本身。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以使用已定义不同网址状态的页面中的cache: false参数来阻止角度js中文件的缓存。

$stateProvider.state('login', {
        url: '/yourState',
        cache: false,
        templateUrl: 'yourTemplate.html',
        controller: 'yourController as yourCtrlObj'
    });

在状态参数中设置cachefalse时,一旦页面加载,相应页面中的所有文件都将重新加载。这里我在angular js

中使用controllerAs语法给出了一个例子

答案 1 :(得分:1)

如果你的目标是实现缓存和适当的资源重新验证,那么我建议你使用以下标题:

Cache-Control: max-age=0, must-revalidate
ETag: 'some generated value based on the content' 

在这种情况下,浏览器将始终发送检查 ETag 值的请求,如果 ETag 已更改,则服务器将发送新内容,否则将以状态代码:304未修改

如果您已经在生产中部署了网站,现在需要在用户浏览器中使现有缓存无效,请阅读Tim建议的内容:link