所以这是一个奇怪的问题,我似乎无法找到任何在线参考。希望这里的人可以阐明以下内容以及可能的解决方法-
我有一个符合Google PWA要求的Angular CLI应用程序。一切都按预期工作,但是某些图像不会被服务工作者缓存。
这是我的ngsw-config.json-
{
"$schema": "./node_modules/@angular/service-worker/config/schema.json",
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js",
"../assets/signalR/appHub.js",
"../admin/images/**",
"../manifest/manifest.json"
],
"urls": [
"/api/WhoAmI",
"/api/GetApps"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**",
"/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)",
"../admin/images/**"
]
}
}
]
}
在admin / images文件夹中,有一些背景图像,徽标,微调器,图标等。 但是,当我运行'ng-build --prod'时,唯一被缓存的图像是CSS中引用的图像(背景图像)。放在页面本身上的任何内容都将被忽略。
这将导致没有徽标或图标的离线页面。
查看生成的“ dist”文件夹,将“工作”图像文件复制并赋予一个随机后缀。
在生成的ngsw.json文件中,这些是唯一引用的图像,没有提及丢失的徽标等。
{
"configVersion": 1,
"timestamp": 1568879436433,
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"updateMode": "prefetch",
"urls": [
"/favicon.ico",
"/index.html",
"/main-es2015.b125878abf05e7d82b63.js",
"/main-es5.6e9e620d3fbd96496f98.js",
"/polyfills-es2015.4d31cca2afc45cfd85b5.js",
"/polyfills-es5.2219c87348e60efc0076.js",
"/runtime-es2015.703a23e48ad83c851e49.js",
"/runtime-es5.465c2333d355155ec5f3.js",
"/scripts.f616c8c0191ed4649bce.js",
"/styles.a4be089a70c69f63e366.css"
],
"patterns": [
"\\/api\\/WhoAmI",
"\\/api\\/GetApps"
]
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"urls": [
"/assets/signalR/appHub.js",
"/bgrounds-geometric-black.8d983f6875c006eda992.png",
"/bgrounds-geometric-red.1484266e3058319624bd.png",
"/block-spinner-dark.20f05a2ddef506c61f4d.gif",
...
}
...
}
有人能揭开这个神秘面纱吗?
很抱歉,这个问题很长,但是,如果您到此为止,谢谢:)
感谢您的帮助!
答案 0 :(得分:0)
通过弄乱一些不同的东西,我发现了一种解决方法-不能解释为什么它最初不能正常工作。
似乎我的文件夹从admin/images
重命名为assets/images
并更新了相关的resource > files paths
使其正常工作。
如果有人偶然发现了更多有关此原因的见解,请告诉我。
谢谢, 罗布
答案 1 :(得分:-1)
我在 ngsw-config.json 中添加了以下行
"/runtime*",
"/main*",
"/style*",
"/polyfill*"
之后是这个样子
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/runtime*",
"/main*",
"/style*",
"/polyfill*",
"/favicon.ico",
"/index.html",
"/css",
"/js"
]
}
}, {
然后就成功了。