Мой сервисный работник не кэширует мои статические активы.
Когда онлайн, используя Chrome DevTools, похоже, что ServiceWorker работает. Я вижу строки для styles.xxx.css, runtime.xxx.js, polyfills.xxx.js и main.xxx.js с размером, указанным как «из Service Worker». Затем в более поздних строках эти же файлы будут перечислены с размером как «из дискового кэша».
На вкладке Приложение Chrome DevTools в разделе Кэш-хранилище у меня есть следующие строки:
ngsw: db: control - http://127.0.0.1:8080
ngsw: xxx: assets: app: cache - http://127.0.0.1:8080
ngsw: xxx: assets: app: meta - http://127.0.0.1:8080
Нажатие на последние две строки ничего не приводит к разделу «Путь» DevTools.
Файл ngws-worker.js имеет статус «активирован и работает». Это было «Получено 31.12.1969», что странно.
Затем, когда я перехожу в автономный режим, рабочие службы не отображаются. И кэш-память пуста. В последней строке сети указано ngsw.json? Ngsw-cache-bust = xxx Состояние (не удалось) Тип извлечения Инициатор ngsw-worker.js: 2662.
Мои сценарии package.json (которые я скопировал из AngularFirebasePro)
"webpack:prerender": "webpack --config webpack.prerender.config.js",
"build:prerender": "node dist/abogado/prerender.js",
"serve:prerender": "http-server dist/abogado -o",
"build:all": "ng build --prod && ng run abogado:server && npm run
webpack:prerender && npm run build:prerender"
В angular.json у меня
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/abogado-server",
"main": "src/main.server.ts",
"tsConfig": "src/tsconfig.server.json"
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
]
}
}
}
мой файл ngsw-config.json
{
"index": "/index.html",
"assetGroups": [{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/index.html"
],
"versionedFiles": [
"/*.bundle.css",
"/*.bundle.js",
"/*.chunk.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}]
}
Как только я создаю свое приложение, моя папка dist содержит ngsw.json и ngws-worker.js.
Я не знаю NodeJS.
Во-первых, я хотел бы знать, возможно ли кэширование статических ресурсов в Angular Universal. Во-вторых, что вы думаете не так с моим кодом?
Спасибо:)
РЕДАКТИРОВАТЬ: добавление содержимого файла main.ts.
if (environment.production) {
enableProdMode();
}
document.addEventListener('DOMContentLoaded', () => {
platformBrowserDynamic().bootstrapModule(AppModule)
.then(() => {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/ngsw-worker.js') ;
}
})
.catch(err => console.error(err));
});