一个域中的Angular 5多服务工作者
我在同一个域中的两个应用程序中有两个服务工作者(两个Angular 5):
>一个内/前端/ 我正在使用@ angular / service-worker包来管理服务工作者. 当我构建prod版本并部署我的应用程序时会发生奇怪的事情. 当我首先进入http://my.domain/frontend/时,我无法进入http://my.domain/backend/,因为服务人员加载文件并将我重定向到http://my.domain/frontend/ 这个设置有什么问题?我需要更改该服务工作者的文件名,或者只是我在这个设置的同一个域上不能有两个角度应用程序 解决方法
我有同样的问题(重新启动浏览器后,服务器关闭 – 只是按预期从ServiceWorker获取数据,但混淆了).然后我遇到了
this stackoverflow question并将assetsGroups的名称更改为所有(现在我的情况下为2)应用程序之间的不同名称.
例如: 来自App 1的ngws-config.json: { "index": "/index.html","assetGroups": [ { "name": "sw-app-app","installMode": "prefetch","resources": { "files": ["/favicon.ico","/index.html"],"versionedFiles": ["/*.bundle.css","/*.bundle.js","/*.chunk.js"] } },{ "name": "sw-app-assets","installMode": "lazy","updateMode": "prefetch","resources": { "files": ["/assets/**"] } } ] } App 2中的ngws-config.json: { "index": "/index.html","assetGroups": [ { "name": "sw-app-two-app",{ "name": "sw-app-two-assets","resources": { "files": ["/assets/**"] } } ] } 因为: Cache Storage API(和其他存储机制,如IndexedDB)在整个源中共享,默认情况下没有“分片”或命名空间隔离. 我的猜测是这两个应用程序的缓存存储中使用了这个默认名称(但是还有一个哈希,这仍然让我感到困惑).我还检查了缓存存储并删除了所有不包含sw-app(或sw-app-two)的ngsw:*条目. 在这些更改之后,一切似乎都运行得更好,但经过一些重新加载(使用活动服务器)后,我意识到我的sw-app条目来自Cache Storage,在打开sw-app-two之后不见了.只有sw-app-two条目和一个名为ngsw:db:control left的条目.此条目仅包含sw-app-two的ngsw-conig.json的资产组(在清单下).再次打开sw-app后,assetGroups清单中的内容更改为sw-app,sw-app-two内容消失了. 所以我有ngsw:db:控制左边有sw-app内容,其他Cache Storage条目名称包含sw-app-two.当我打开两个应用程序(服务器关闭)时,总会出现sw-app-two(没有错误,但它只是一个没有真正内容的应用程序).这个混合适用于一个应用程序,也不知何故混淆. 更多细节,但仍然没有解决方案.很想检查角度代码并制作公关但……至少提出问题.我很确定缓存存储在同一来源的应用程序之间混淆了. PS:当你设置baseHref时,一定要检查这个github问题:#8515 #8516 编辑:我创建了issue #21388 EDIT(2): Service Worker脚本必须托管在同一源(协议域名端口).在this stackoverflow question提到 我将为每个应用程序创建一个子域,并在本地不同的端口上运行多个http服务器来测试它.这应该工作,似乎是这种用例的唯一解决方案.希望这也是你的选择!如果没有,你可以写一个评论来提升issue的频率标签;-) EDIT(3): 我找到了一个似乎有效的解决方案,但你必须在构建过程之后编辑ngsw-worker.js.只需将ngsw:db:替换为应用程序的唯一名称(例如:ngsw:db:sw-app-one:for sw-app-one,ngsw:db:sw-app-two:for sw-app-二) EDIT(4): 可悲的是,解决方案不起作用,控制键的条目(例如:ngsw:db:sw-app-one:control)将被另一个应用程序的内容覆盖…我将在issue发表评论以获取更多详细信息. .. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |