Firebase托管 - 强制浏览器重置新部署的缓存?

Pat*_*ham 15 deployment caching firebase-hosting

我有一个使用create-react-app构建的网站,并在Firebase Hosting上托管.如何指定浏览器缓存需要在新部署后更新,并且理想情况下仅适用于自上次部署以来已更改的页面,资产和样式表?

有没有办法访问部署ID并在标头中包含该(或任何其他唯一标识符),以便浏览器可以与本地存储或缓存中的内容进行比较,并确定是否需要进行硬刷新?我查看了Firebase部署以及完整配置文档,但没有提及如何访问托管元数据,如上次部署时间.

Cache-Control值设置为max-age=[any number]似乎并不理想,因为它忽略了下一次部署何时发生(除非有常规计划,否则可能无法开始).

Pat*_*ham 29

我想到了.不得不firebase.json根据这个Github评论更新文件:

{
  "hosting": {
    "headers": [
      { "source":"/service-worker.js", "headers": [{"key": "Cache-Control", "value": "no-cache"}] }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 是否仅在部署新版本时才清除缓存,还是每次用户访问该站点时都会清除缓存? (3认同)
  • 此处的Firebase文档:https://firebase.google.com/docs/hosting/full-config#headers (2认同)
  • 此处的缓存控制文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control (2认同)

小智 5

请在 firebase.json 中设置“max-age=0”。

    "headers": [
        {
            "source": "/service-worker.js",
            "headers": [
                {
                    "key": "Cache-Control",
                    "value": "no-cache, no-store, must-revalidate"
                }
            ]
        },
        {
            "source": "**/*.@(jpg|jpeg|gif|png|svg|webp|js|css|eot|otf|ttf|ttc|woff|woff2|font.css)",
            "headers": [
                {
                    "key": "Cache-Control",
                     "value": "max-age=0"
                }
            ]
        }
    ]
Run Code Online (Sandbox Code Playgroud)