【问题标题】:Is there a way to deploy images to Firebase hosting, but only where changes exist?有没有办法将图像部署到 Firebase 托管,但仅限于存在更改的地方?
【发布时间】:2017-07-07 03:18:27
【问题描述】:

我将 Angular2 站点部署到 Firebase 托管,但“dist”文件夹始终将整个图像集合发送到“资产”文件夹中,即使它们没有更改。这会占用比必要更多的带宽,因为此文件夹比所有其他文件的总和还要大。

如何仅部署已更改的映像? 策略是:

A) 配置 Firebase CLI“deploy”命令以仅处理更改的图像

与/或

B) 将 Angular 生产版本配置为仅打包更改的图像(尽管这仍需要 Firebase 更新“资产”文件夹,而不是在部署时覆盖所有其他未更改的图像)

正如我所见,Firebase 存储并不是一个好的选择……在页面加载时调用 API 来访问图像只会减慢加载时间……除非这涉及到缓存策略?归根结底,该解决方案需要让 CDN 和 CLI 协同工作,以最大限度地减少带宽和加载/部署时间。

【问题讨论】:

    标签: angular firebase angular-cli firebase-storage firebase-hosting


    【解决方案1】:

    抱歉,目前没有针对 Firebase 托管静态内容的部分部署。

    另一种方法可能是将您的图像托管在一个项目中,而将其他所有内容托管在另一个项目中。如果您的图像不经常更改,那么如果没有任何变化,您就不必使用图像部署到项目中。

    您还可以使用 Storage 来存储您的图像,然后通过 Cloud Functions integration with Firebase Hosting 提供它们,它可以动态地进行查找并将图像代理到客户端。然后可以将托管配置为将图像缓存在 CDN as described in the documentation

    如果您改为在实时数据库中记录图像的存储下载 URL,而不是要求存储生成一个并让客户端查看那里,您也可能会看到一些收益。

    【讨论】:

    • 很好@DougStevenson,非常感谢!希望我能为您的快速响应加分:)
    • 我发现 this link 从您的参考资料中特别有趣。如果我理解正确,使用您描述的方法,我可以使用“--only”命令进一步控制我的部署,而不必离开 CLI 进行内容更新!
    • 对,您可以firebase deploy --only hosting 只发送您的托管内容而不发送其他任何内容(尽管将始终发送整组文件)。您可以看到函数对一次更新单个函数具有更好的部分部署支持。借助 Cloud Storage,您可以使用 gcloud 命令行上传单个文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 2021-01-05
    • 1970-01-01
    • 2021-03-03
    • 2020-02-28
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多