Я пытаюсь очистить кэши служб после развертывания нового приложения.Я использую http-сервер для развертывания на локальном хосте.У меня уже запущено угловое приложение, и мой сервисный работник зарегистрирован.Когда я изменяю некоторый код и повторно внедряю приложение, я вижу в кеш-памяти, что старый кеш все еще присутствует.В манифесте кеша я вижу массив файлов ngsw.json.Существует вкладка «последние», где хранится последний хэш.Приложение отображается с использованием последнего хеша манифеста, но иногда оно также отображается и с помощью более старых манифестов.Я не могу воспроизвести этот случай, но это случается очень редко.Через 10-15 минут манифест очищается, и в хранилище кэша присутствует только один хэш манифеста.Это происходит случайным образом без какой-либо согласованности.
Если я проверю «Обновить при перезагрузке» на вкладке «Работник службы», старые манифесты кэша будут немедленно очищены.Мне бы хотелось, чтобы старый кеш мгновенно удалялся работником службы угловых служб.
Вот так выглядит мой ngsw-config:
{
"configVersion": 1,
"index": "/index.html",
"appData": ["/index.html", "/*.bundle.css", "/*.bundle.js", "/*.chunk.js"],
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": ["/favicon.ico", "/index.html"],
"versionedFiles": ["/*.bundle.css", "/*.bundle.js", "/*.chunk.js"]
}
},
{
"name": "assets",
"installMode": "prefetch",
"updateMode": "prefetch",
"resources": {
"files": ["/assets/**"]
}
}
]
}
И вот как я зарегистрировал его вapp.module.ts:
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
RouterModule,
APP_ROUTING,
ServiceWorkerModule.register('/ngsw-worker.js', {
enabled: environment.production
})
],
providers: [],
bootstrap: [AppComponent]
})
Вот так выглядит мой 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.css']
})
export class AppComponent {
title = 'app';
constructor(private updates: SwUpdate) {
this.updates.available.subscribe((event: any) => {
this.updates.activateUpdate().then(() => {
document.location.reload(true);
});
});
}
Вот так выглядит несколько манифестов в Cache Storage:
113eb2d75d6b2b62654822b31924678b90ee76e9: {configVersion: 1, index: "/index.html",…}..
23er43ertgvcx6751cvb8u8u9o0mnb6765098h76: {configVersion: 1, index: "/index.html",…}..
987ujvsskjfd56snsnf34flo3298fcdgnzx768z7: {configVersion: 1, index: "/index.html",…}..
343eb2d56d6b2b638493hh331664690f55ssz8j8: {configVersion: 1, index: "/index.html",…}..
И самый последний ключ чуть выше манифеста:
{ latest: "113eb2d75d6b2b62654822b31924678b90ee76e9" }
В Cache Storage должен быть только последний хэш, присутствующий в один момент времени.Как очистить старые кэши Манифеста и сохранить последний?