Sra*_*van 7 firefox caching angular angular-service-worker
我正在使用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());
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码做了什么:
subscribes到updates.available事件.问题:
现在,问题是,它在chrome上完美运行.但不是在Firefox中.在Firefox中,代码不会进入内部
updates.available.subscribe
我有同样的问题,并能够通过注册服务工作者来修复它main.ts:
platformBrowserDynamic().bootstrapModule(AppModule).then(() => {
if ('serviceWorker' in navigator && environment.production) {
navigator.serviceWorker.register('/ngsw-worker.js');
}
}).catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
我还创建了一个Service worker服务,以便在有新的可用更新时通知用户:
如果您对我的服务工作者服务的外观感兴趣,可以在此处查看代码.
您还可以通过访问来检查是否记录了任何错误 yourdomain.com/ngsw/state