angular - 使用服务器端优化包(例如 Pagespeed 模块)时如何修复 Angular 8 Service Worker 哈希不匹配错误
问题描述
我得到了哈希不匹配错误Error(Hash mismatch (cacheBustedFetchFromNetwork)
,因为我实现了一个 PageSpeed 模块,该模块在创建 @angular/service-worker 后编辑文件(顺便说一句很棒的包!)。是否有可能以某种方式让这些工作一起工作?
禁用 PageSpeed 模块(在本地主机上)一切正常,但我想创建一个样板,其中包含多个最佳实践一起工作。我在 Ubuntu 虚拟服务器上运行应用程序和反向代理( jwilder nginx 代理)容器。
我不确定什么样的代码在这里会有所帮助,但这里是我使用的 repo:
我的应用程序仓库的代码在这里 带有一些编辑设置的反向代理代码在这里
我希望可以有一些自动化的过程来创建服务工作者,同时以正确的顺序进行页面速度优化,但我还无法想象它是如何工作的。
我得到的完整错误消息是:
Clients:
=== Idle Task Queue ===
Last update tick: 5s342u
Last update run: 342u
Task queue:
Debug log:
[193u] Error(Hash mismatch (cacheBustedFetchFromNetwork): https://raw3.io/index.html: expected 7bd969964be1eec77b1db64c6ca8d6b26759f961, got 89dc3af453c7dacfa5518ff96d8a514c61cde1f1 (after cache busting), Error: Hash mismatch (cacheBustedFetchFromNetwork): https://raw3.io/index.html: expected 7bd969964be1eec77b1db64c6ca8d6b26759f961, got 89dc3af453c7dacfa5518ff96d8a514c61cde1f1 (after cache busting)
at PrefetchAssetGroup.<anonymous> (https://raw3.io/ngsw-worker.js:699:35)
at Generator.next (<anonymous>)
at fulfilled (https://raw3.io/ngsw-worker.js:320:62)) Error occurred while updating to manifest 536ad256c5372555c8f73baed2eefa2280c723ae
解决方案
我对 PageSpeed 不熟悉,但快速浏览一下,它似乎可以即时进行优化(并缓存它们以备将来使用)。的当前实现@angular/service-worker
不支持服务文件延迟构建工件的场景(将基于该构建工件ngsw.json
生成清单文件)。在 Angular 存储库中跟踪此问题存在问题:#23613
如果可以(实际上不是)“离线”运行优化(例如作为构建步骤),您可以ngsw.json
通过运行重新生成清单文件(以考虑更新的文件内容):
node_modules/.bin/ngsw-config path/to/dist/directory path/to/ngsw-config.json [/base/href]
推荐阅读
- c# - Expression.MethodCallExpression 将 MemberExpression 作为参数传递
- r - 在 R 中以不同的步骤使用 seq
- dax - LOOKUPVALUE 基于 DAX 中的聚合函数
- here-api - here-api - 计算路线距离
- tcl - 在“array”集合中创建新命令时出现问题
- python - 加快循环时间迭代 Python 中相对较大的 Excel 工作表
- excel - 从 Excel 中的范围创建唯一值列表
- ruby - 在 routes.rb 中添加页面链接/锚点到 Rails 资源
- apache-spark - 将火花特征转换管道导出到文件
- javascript - 在这种情况下,什么是“生成”?