我正在使用angular js app,它是一个单页应用,我们正在使用路由来切换视图。当索引页面第一次被点击时,所有文件(样式表和javascripts)只被加载一次,并且假设我在其中一个样式表或javascript文件中更新,那么它将使用旧版本的文件,而不是更新的文件。
我想强制客户端浏览器在服务器文件中有更新时获取最新文件,而不从缓存中取出它而不刷新页面(index.html)本身。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您可以使用已定义不同网址状态的页面中的cache: false
参数来阻止角度js中文件的缓存。
$stateProvider.state('login', {
url: '/yourState',
cache: false,
templateUrl: 'yourTemplate.html',
controller: 'yourController as yourCtrlObj'
});
在状态参数中设置cache
到false
时,一旦页面加载,相应页面中的所有文件都将重新加载。这里我在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