0

所以这是一个奇怪的问题,我似乎无法在网上的任何地方找到参考。希望这里的某人可以阐明以下内容以及潜在的解决方法-

我有一个符合谷歌 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",
        ...
    }
    ...
}

有没有人能够揭开这一切的神秘面纱?

很抱歉这个问题很长,但如果你已经走到这一步了,谢谢你:)

任何帮助表示赞赏!

4

2 回答 2

0

通过弄乱一些不同的东西,我找到了一个解决方法 - 虽然没有解释为什么它最初不起作用。

似乎将我的文件夹从admin/imagesto重命名assets/images并更新相关的resource > files paths让它工作。

如果有人偶然发现对此原因的更多见解,请告诉我。

谢谢,罗伯

于 2019-09-19T09:38:33.173 回答
-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"
        ]
      }
    }, {

然后它起作用了。

于 2021-03-12T06:59:58.887 回答