我正在使用Angular5
和angular service worker
。
我cached
有一些数据和一些资产,一切都按预期工作,甚至部署了代码。
现在,如果我更新一些代码并再次部署,则service worker
不会更新。
所以,我已经通过了Angular 服务工作者链接并且我实现了SwUpdate service
。
这是我的代码:
我创建了一个服务并在 App Component 中调用它
import { Injectable, NgZone } from '@angular/core';
import { interval } from 'rxjs/observable/interval';
import { SwUpdate } from '@angular/service-worker';
import { Observable } from 'rxjs/Rx';
@Injectable()
export class ServiceWorkerService {
constructor(updates: SwUpdate, ngZone: NgZone) {
console.log('Servicee worker update called');
updates.available.subscribe(event => {
console.log('current version is', event.current);
console.log('available version is', event.available);
updates.activateUpdate().then(() => document.location.reload());
});
updates.activated.subscribe(event => {
console.log('old version was', event.previous);
console.log('new version is', event.current);
});
ngZone.runOutsideAngular(() => {
interval(6000).subscribe(() => {
console.log('Inside Interval')
ngZone.run(() => updates.checkForUpdate());
});
});
}
}
上面的代码做了什么:
- 每当部署新代码时,旧的 serviceworker 都会检测到它。
- 然后它
subscribes
的updates.available
事件。 - 我们监听该事件并重新加载页面。
问题:
现在,问题是,它在 chrome 上完美运行。但不是在 Firefox 中。在Firefox中,代码没有进入
updates.available.subscribe