Firebase托管(Angular 8 + Service Worker)在刷新时未更新

问题描述 投票:-1回答:1

我拥有quackr.io,并且由于用户看不到我的代码的新版本而遇到了一些麻烦。 quackr是部署到Firebase托管上的PWA(Angular SSR + Service worker)。

[每当我部署新版本时,以前浏览过该网站的任何人都将看到旧版本。如果进行硬刷新,您将看到新版本。但是,如果您执行其他常规页面刷新,它将恢复为旧版本。

  • 页面刷新:接收旧版本
  • 硬刷新:接收新版本(但只要我再次进行常规刷新,就可以获取旧版本)
  • 注销Chrome中的Service Worker,并进行常规刷新:接收新版本(但在我第二次刷新后也可以获取旧版本)。
  • 我已经清除了所有浏览器的缓存,Cookie和存储。同样,这适用于初始刷新,但不适用于任何后续刷新。

这是我的firebase.json(我希望将no-cache添加到服务工作者js中,这会在部署时使它无效,但无法正常工作:]]]

{
  "hosting": {
    "public": "dist/browser",
    "headers": [
    {
      "source": "/@(ngsw-worker.js|ngsw.json)",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "no-cache"
        }
      ]
  } 
  ],
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "ssr"
      }
    ]
  },
  "functions": {
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
  }
}

ngsw-config.json:

{
  "index": "/index.html",
  "appData": {
    "name": "quackr.io",
    "description": "v2.0"
  },
  "assetGroups": [{
    "name": "app",
    "installMode": "prefetch",
    "resources": {
      "files": [
        "/favicon.ico",
        "/index.html",
        "/*.css",
        "/*.js"
      ]
    }
  }, {
    "name": "assets",
    "installMode": "lazy",
    "updateMode": "prefetch",
    "resources": {
      "files": [
        "/assets/**"
      ]
    }
  },
  {
    "name": "fonts",
    "resources": {
      "urls": [
        "https://fonts.googleapis.com/**"
      ]
    }
  }]
}

https://quackr.io/ngsw-worker.js

任何帮助,谢谢大家!

我拥有quackr.io,并且由于用户看不到我的代码的新版本而遇到了一些麻烦。 quackr是部署到Firebase托管上的PWA(Angular SSR + Service worker)。每当我部署一个...

angular firebase service-worker firebase-hosting angular-universal
1个回答
0
投票

您将需要使用Angular的Service Worker更新功能,该功能将监视应用程序中的任何新更改,然后刷新页面或将更新通知用户,并为他们提供刷新自己的选项:

© www.soinside.com 2019 - 2024. All rights reserved.