Я использую Angular PWA и Angular Universal одновременно и играю с автономной навигацией.
Поведение, которое я пытаюсь реализовать для запросов навигации:
- Когда он-лайн, обслуживайте страницы, отображаемые на стороне сервера, для максимальной первой скорости рисования (затем на стороне клиента)
- В автономном режиме откат к кэшированному
index.html
для использования кэшированного клиентского приложения
Проблема в том, что ngsw-worker.js
и его файл конфигурации ngsw-config.json
не обеспечивают достаточно высокий уровень детализации для достижения этого.
Вот мой текущий ngsw-config.json
, он обеспечивает поведение, близкое к тому, которого я стремлюсь достичь, но когда я обновляю приложение в автономном режиме, оно работает только тогда, когда страница была обновлена (таким образом, кэширована) в онлайн-режиме. до этого.
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js"
]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**",
"/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
]
}
}
],
"dataGroups": [
{
"name": "backend",
"urls": [
"/backend/**"
],
"cacheConfig": {
"maxSize": 100,
"maxAge": "3d",
"strategy": "freshness"
}
},
{
"name": "serverSideRenderedPages",
"urls": [
"/**"
],
"cacheConfig": {
"maxSize": 100,
"maxAge": "3d",
"strategy": "freshness"
}
}
],
"navigationUrls": [
"!/**"
]
}
Я думаю, что работник службы должен быть "универсально осведомлен", но есть ли какое-то чистое решение или обходной путь для этого, пока его нет?