首页 > 解决方案 > 如何在 Firebase 中存储大量 HTML 文件并通过 http 请求提供服务?

问题描述

我有很多需要存储的 html 报告,然后我希望能够从 API 端点将其提供给我的应用程序GET /:reportID

我最初且可能是愚蠢的方法是将所有 HTML 文件存储在云函数上,然后在调用端点时发送 HTML 文件。这不起作用,因为The maximum size of a single function deployment限制只有 100MB 压缩或 500MB 未压缩。(我有近十万个 HTML 文件)

然后我正在考虑将文件存储在 Firebase 存储中。在调用云函数时提供它,首先下载它然后发送给客户端。我认为这不是一个好方法,因为涉及很多任务。

我能想到的另一种方法是将文件直接放入我的客户端应用程序中。但是,我不使用来自 firebase 的身份验证,所以我有一个需要首先进行身份验证的令牌。我不确定这是否可以添加到 Firebase 存储规则中。

我目前被卡住了。任何人都可以给我一些关于我应该如何解决这个问题的见解?

标签: firebasegoogle-cloud-functionsfirebase-storage

解决方案


Firebase 存储是幕后的 Google Cloud Storage Bucket。text/html您可以将 HTML 文件直接作为对象(HTML 文件)存储在具有内容类型的 Google Cloud Storage Bucket 中,而不是将您的 HTML 文件作为来自 Cloud Function 的响应提供。然后您需要打开存储桶以供公众访问。安全方面,您可以只允许经过身份验证的用户访问文件。因此,您可以直接从 Cloud Storage 提供文件,并克服 100MB 的限制。

您的文件将可通过此 URL 模式访问https://storage.googleapis.com/<BUCKET_NAME/<HTML_FILE_NAME

最后,您可以改进:

  • 您可以将 HTML 文件缓存在 CDN 后面
  • 您可以将storage.googleapis.com域替换为静态 IP 地址。

您可以通过简单的方式完成所有这些步骤,在这个Google 文档中有很好的记录。


推荐阅读