使用 Firebase Hosting 提供动态内容和托管微服务

Firebase Hosting 与无服务器计算方案(包括 Cloud Functions for Firebase 和 Cloud Run)集成。将 Firebase Hosting 与这些方案搭配使用,您可以定向 HTTPS 请求来触发函数和容器化应用在代管式安全环境中运行,从而托管微服务。

Cloud Functions for Firebase:您可以编写并部署一个函数,该函数是响应特定触发器的后端代码。然后,您可以使用 Firebase Hosting 来定向 HTTPS 请求以触发您的函数运行。

Cloud Run:您可以编写并部署封装在容器映像中的应用。然后,您可以使用 Firebase Hosting 来定向 HTTPS 请求以触发容器化应用运行。

使用场景

如何将无服务器计算选项和 Firebase Hosting搭配使用?

  • 提供动态内容 - 除了在 Hosting 网站上提供静态内容外,您还可以从执行服务器端逻辑的函数或容器化应用提供动态生成的响应。

    例如,您可以将网址格式(例如 /blog/<blog-post-id>)指向一个函数,该函数使用网址中的博文 ID 参数从您的数据库动态检索内容。

  • 构建 REST API - 您可以使用函数创建微服务 API。

    例如,函数可以处理您网站的登录功能。当网站托管在 / 时,对 /api 发出的任何请求都会重定向到微服务 API。如需示例,请查看此开源示例

  • 缓存动态内容 - 您可以在全球级 CDN 上配置动态内容缓存

    例如,如果某个函数只是定期生成新内容,您可以通过将生成的内容至少缓存一小段时间来加快应用的速度。您还有可能降低执行费用,因为内容是从 CDN 提供的,而不是通过触发的函数或容器化应用提供的。

  • 预呈现单页应用 - 您可以通过创建动态 meta 标记来改进搜索引擎优化 (SEO) 并优化在不同社交网络中的分享方式。如需了解详情,请观看此视频或查看此开源示例

选择无服务器方案

Cloud Functions for FirebaseCloud Run 都与 Firebase Hosting 集成,并提供全代管式、自动扩缩且安全的无服务器环境,但这两种方案可用于不同的使用场景,并根据所需的自定义配置级别进行选择。

使用任一无服务器方案时,最好将其与 Firebase Hosting 的服务器放在同一位置,方法是在以下任一区域中进行部署:

  • us-west1
  • us-central1
  • us-east1
  • europe-west1
  • asia-east1

下表介绍了使用 Cloud Functions for Firebase 与 Cloud Run 的一些基本注意事项。如需配额、限制和指标的完整列表,请参阅每个产品的详细文档(Cloud Functions for FirebaseCloud Run)。

注意事项 Cloud Functions for Firebase Cloud Run
设置 Firebase CLI 将多个任务(从初始化到构建和部署)捆绑到单个命令中。 容器提供了更多可自定义的选项,因此设置、构建和部署任务涉及多个独立步骤。
运行时环境 需要 Node.js,但您可以指定要使用的 Node.js 版本 构建容器时,您要指定运行时环境。
语言和框架支持

JavaScript 和 TypeScript

支持 Web 框架,如 Express.js。

Dockerfile 支持的任何语言,包括 Go、Node.js、Python、Java 等

支持每种语言的 Web 框架。

Hosting 请求的超时 60 秒(请参阅下面的“注意”部分) 60 秒(请参阅下面的“注意”部分)
并发 每个函数实例 1 个请求
(单个实例不能处理并发请求)
每个容器实例最多 1000 个并发请求
结算 Cloud Functions 用量

提供免费使用配额,但需要 Cloud Billing 账号。请参阅 Firebase 常见问题解答

Cloud Run 用量Container Registry 存储空间

提供免费使用配额,但需要 Cloud Billing 账号