我们目前正在进行一个新项目,其中一个客户每天都在使用定期更新.这个项目是使用angular 2开发的,我们面临缓存问题,也就是说我们的客户没有看到他们机器上的最新变化.

主要是js文件的html/css文件似乎得到了正确的更新,而不会带来太多麻烦.

推荐答案

angular-cli通过为build命令(版本6/7,更高版本请参见here)提供--output-hashing标志来解决此问题.示例用法:

ng build --output-hashing=all

Bundling & Tree-Shaking提供了一些细节和背景.运行ng help build,记录标志:

--output-hashing=none|all|media|bundles (String)

Define the output filename cache-busting hashing mode.
aliases: -oh <value>, --outputHashing <value>

虽然这只适用于angular-cli的用户,但它工作出色,不需要任何代码更改或其他工具.

Update

helpfullycorrectly条 comments 指出,这个答案为.js个文件添加了一个散列,但对index.html个文件没有任何作用.因此,在ng build缓存 destruct .js个文件之后,index.html完全有可能保持缓存状态.

在这一点上,我将推迟到How do we control web page caching, across all browsers?

Angular相关问答推荐

在状态更新后是否会再次触发ngrx效果?

如果Angular 模块是独立的,为什么我不需要在App模块中使用RouterModule?

[已解决]如何在模块ngDoBootstrap中测试Angular 自定义元素和做覆盖

在剑道UI网格中包装Excel导出的列

NG-BOOTSTRAPP SCROLLESPY没有高度就不能工作?

Angular -移位在2个示波器中读取

无法匹配任何路由.URL段:';英雄';

在Cypress中,对xlsx文件的读取并不总是正确的

当我更新S显示的数据时,为什么我的垫表用户界面没有更新?

错误TS2531:对象可能为空.论窗体数组控件

Angular CLI 与 Angular 版本不兼容

Angular 路由中的模块构建失败

由于ngcc操作失败,Angular扩展可能无法正常工作

显示带有数组子列的标题表 - Angular

找不到模块'webpack'

Angular 没有可用于依赖类型的模块工厂:ContextElementDependency

在Angular2的 Select 列表中设置最初 Select 的项目

如何组合两个可观察到的结果?

如何作为模块的子模块路由到模块 - Angular 2 RC 5

如何在Angular 2中将对象从一个组件传递到另一个组件?