Context
В настоящее время мы создаем наше приложение, используя Angular. Это одно приложение обслуживается из нескольких доменов и предоставляет разные цвета и контент в зависимости от того, в каком домене находится пользователь. Но это то же самое приложение Angular.
Чтобы обеспечить скорость и некоторый опыт работы в автономном режиме, мы настроили работника сервиса, который работает просто отлично. Мы используем следующий код для отображения диалогового окна для наших пользователей при каждом обновлении приложения перед автоматической перезагрузкой страницы:
export class ApplicationService {
constructor(private dialog: DialogService, private worker: SwUpdate) {
this.worker.available.subscribe(event => {
this.dialog.updateApplication();
});
}
}
Проблема
Поскольку приложение обслуживается в нескольких доменах , это также означает, что каждый домен управляет своим собственным доменным кешем.
Например, когда пользователь переходит на domain-a.com
и доступна новая версия, появится диалоговое окно и страница обновится sh и это нормально.
Однако, если тот же пользователь перейдет к domain-b.com
, он испытает то же самое, и это не то, что мы хотим. Поскольку это одно и то же приложение, мы в идеале хотим, чтобы все домены были обновлены до новой версии.
Итак, вопрос в том: возможно ли это? И если да, какие стратегии мы можем реализовать, чтобы обойти эту проблему?
РЕДАКТИРОВАТЬ
Вот частичное содержание моего манифеста, а также конфигурация моего работника службы:
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)"
]
}
}
]
}