Firebase 如何管理 Firebase Hosting 中的版本?

How does Firebase manage versions in Firebase Hosting?

Firebase 托管会在您部署网站时立即提供新版本的网站。同时,您可以立即回滚到之前的版本。通常 CDN 需要几分钟才能传播更改,这同样适用于 .htaccess 文件或类似文件,它们可以进行重定向,让我认为它们在 CDN 之上有一个动态的额外层。如果他们这样做,他们将如何处理 DNS 内容?

您有一个使用 CNAME 访问 Firebase mysite.web.app 的自定义域名,Firebase 可能使用 CNAME 转发到 Fastly(基于网络查找的 Firebase CDN 提供商)域,例如firebase-customerid-mysite.fastlycdn.net

我无法完全弄清楚他们是如何处理即时版本更改的。他们必须在 CDN 中使用不同的文件夹,但我认为他们不会为每个版本使用不同的子域,因为这需要新证书等,而且不会那么快。那么如何将整个域重定向到子文件夹呢?您可以通过更改 .htaccess 文件来做到这一点,但这也需要几分钟的时间。你觉得他们是怎么做到的?

提前致谢!

据我所知,firebase 版本更改与 git 的版本更改类似,所以不,他们不会创建不同的目录来部署您的最新版本,他们只是将以前的版本保存在.firebase 或某个文件夹(版本控制目录)和子域不会更改。相反,部署了最新版本,我们可以立即看到由于 no-cache 而发生的变化,通常需要在每次重用之前使用源服务器进行验证。因此,当浏览器快速询问时,它会检查 firebase 服务器是否资源已更改,如果是,则提供该资源的新版本。

参考文献:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control

https://firebase.google.com/docs/remote-config/templates

https://docs.fastly.com/en/guides/how-fastlys-cdn-service-works

要获得类似的结果,可以使用 git 进行版本控制(real-time 中的更改)并使用 no-cache header(用于资源验证)。我们可以使用任何 CDN,因为几乎所有 CDN 都会验证资源。