【发布时间】:2020-06-20 21:26:37
【问题描述】:
上下文
我们目前正在使用 Angular 构建我们的应用程序。这个应用程序由多个域提供服务,并根据用户所在的域提供不同的颜色和内容。但它是同一个 Angular 应用程序。
为了提供速度和一些离线体验,我们设置了运行良好的服务工作者。我们使用以下代码在应用更新时向我们的用户显示一个对话框,然后自动重新加载页面:
export class ApplicationService {
constructor(private dialog: DialogService, private worker: SwUpdate) {
this.worker.available.subscribe(event => {
this.dialog.updateApplication();
});
}
}
问题
由于应用在多个域上提供服务,这也意味着每个域都在管理自己的基于域的缓存。
例如,当用户导航到domain-a.com 并且有新版本可用时,将显示对话框并刷新页面,这没关系。
但是,如果同一个用户现在导航到domain-b.com,他会遇到同样的事情,这不是我们想要的。由于这是同一个应用程序,我们理想情况下希望所有域都与新版本保持同步。
所以问题是:这甚至可能吗?如果是,我们可以实施哪些策略来解决这个问题?
编辑
这是我的清单的部分内容以及我的 service worker 配置:
manifest.webmanifest
{
"name": "my-project",
"short_name": "my-project",
"theme_color": "#277f31",
"background_color": "#fafafa",
"display": "standalone",
"scope": "/",
"start_url": "/",
"icons": [...]
}
ngsw-config.json
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**",
"/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
]
}
}
]
}
【问题讨论】:
-
如何在清单文件中定义根目录以及如何定义要在 service worker 中缓存的 URL?
-
@Francesco 感谢您的回复。我编辑了我的问题以包含我的文件配置的内容。如果您需要更多信息,请告诉我
标签: angular service-worker angular-service-worker multiple-domains