我同时使用 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": [
"!/**"
]
}
我认为服务人员应该“具有普遍意识”,但是如果不是,是否有任何干净的解决方案或解决方法?