У меня есть приложение Angular 8 PWA в производстве. Я регулярно делаю много обновлений, поэтому мне нужно найти способ, чтобы пользователи могли получать эти обновления при открытии приложения.
Без специальных действий приложение не будет обновляться. Если вы откроете приложение в своем браузере, оно покажет версию с момента, когда вы в последний раз открывали приложение, даже если я отправил новый пакет в производство. Похоже, это неудачный результат функциональности PWA.
Я хостинг с AWS Amplify.
Чтобы решить эту проблему (я задал вопрос об этом здесь ), Я пытался использовать swUpdate.
Проблема в том, что он работает слишком медленно. Он перезагрузит браузер, если будет обновление - но это займет некоторое время. Это регулярно занимает несколько секунд после того, как пользователь открывает приложение для перезагрузки. Таким образом, вы открываете приложение, и через 4-6 секунд приложение перезагружается с новой версией.
Есть ли способ сделать swUpdate go быстрее? Или альтернативный способ загрузки новой версии приложения?
Вот мой код, который я считаю простой реализацией:
app.component.ts:
import { Component } from '@angular/core';
import { SwUpdate } from '@angular/service-worker';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
constructor(private swUpdate: SwUpdate) {
title = 'Great App'
swUpdate.available.subscribe(event => {
swUpdate.activateUpdate().then(() => {
window.location.reload();
console.log('there is an Update! Reloading now.')
});
})
if (!this.swUpdate.isEnabled) {
console.log('Not going to update');
}
}
Но это не работает, потому что перезагрузка часто происходит через несколько секунд после того, как пользователь заходит в приложение (даже при хорошем соединении с inte rnet).
Я знаю, что я также мог бы показать сообщение людям, говорящим "Хотите обновить sh новой версией?" Но это не решит проблему, лежащую в основе медленной работы swUpdate.