我想用efficient cache policy服务我的Angular Dart应用程序。理想情况下,我想为所有经过编译的js
和css
资产提供较长的到期时间,并通过将版本哈希附加到请求中来处理代码库中的更改(以及随后要求的缓存无效)。例如我的index.html文件的这一部分
<link rel="stylesheet" href="/css/style.css" media="all"/>
<script defer src="/main.dart.js"></script>
变成类似
<link rel="stylesheet" href="/css/style.css?_=ae0d8ceba" media="all"/>
<script defer src="/main.dart.js?_=ae0d8ceba"></script>
我设法通过自定义Builder
来做到这一点,并且运行良好,但是我的应用程序分为几个模块,其中大多数模块在需要时延迟加载。零件文件以main.dart.js_1.part.js
,main.dart.js_2.part.js
的形式动态请求-我看不到如何向这些请求附加哈希。
我当时正在考虑为dart2js
指定一个包含哈希值的输出文件名,但是build_web_compiler
包会覆盖它,并且无论我指定了什么输出名,都将输出main.dart.js
我能想到的唯一其他解决方法是注册JavaScript Service Worker并拦截所有http请求,如in this answer所述,但我有点不愿意走这条路。
是否有一种“达特斯”式的方法来实现我想要做的事情?