一句话回答
支持。CloudSite 的每个站点都有独立的发布平台设置,可以在 Cloudflare Pages 和 Google Firebase Hosting 之间选择。同一套站点文件、同一套对话改站和增长模块,不需要为 Firebase 单独维护一份内容。
默认平台在「设置 → 默认设置」中配置;已有站点可以在详情页的「上线状态」卡片单独切换,批量任务和 MCP 创建站点时也可以显式指定。
两种发布方式有什么不同
- Cloudflare Pages:直传静态文件,默认地址为 <slug>.pages.dev;绑定域名时自动创建 CNAME 并签发 HTTPS。
- Firebase Hosting:通过官方 Hosting REST API 上传并创建 live release,默认地址为 <siteId>.web.app。
- Firebase 的站点 ID 全局唯一,slug 冲突时系统会追加稳定哈希后缀,实际 ID 保存在站点记录里。
- Firebase 有硬性上限:同一个 Firebase 项目最多 36 个 Hosting 站点;Cloudflare 的域名上限则取决于套餐。
Firebase 部署具体做了什么
CloudSite 按 Firebase 官方文档的 REST 流程执行,不需要安装 Firebase CLI,也不依赖 Git 或构建流水线:
- 检查项目下是否已有对应站点,没有则创建。
- 创建新版本,并为每个文件计算 gzip 后的 SHA-256。
- 调用 populateFiles 登记文件,只上传服务端缺少的哈希。
- 把版本置为 FINALIZED,再发布到 live 渠道。
- 访问地址为 https://<siteId>.web.app,同一内容也可通过 firebaseapp.com 域名访问。
- Cloudflare 专用的 _headers、_redirects、_routes.json 和 _worker.js 会在 Firebase 部署时跳过。
36 个站点的上限怎么算
36 是 Firebase 官方对单个项目 Hosting 站点的上限,不是 CloudSite 的套餐限制。每创建一个 web.app 站点就占用一个名额,和是否绑定自定义域名无关。
如果项目已满,系统会在创建前给出明确提示,而不是等到部署失败。处理方式有两个:删除不再使用的 Firebase 站点,或换一个 Firebase 项目并更新服务账号。
批量建站时要注意:如果默认发布平台设为 Firebase,200 个站点的批次不可能全部放进一个项目,应提前分批或把部分站点切换到 Cloudflare。
自定义域名和 DNS
在 Firebase 中绑定域名后,Firebase 会返回需要配置的 A、AAAA、CNAME、TXT 或 CAA 记录。CloudSite 会把「类型 / 名称 / 值」直接显示在域名卡片里。
如果域名托管在当前账号的 Cloudflare,系统会尝试自动写入:TXT 缺失才新增;CNAME 一致时关闭代理;A / AAAA 只在完全匹配或不存在时处理,绝不覆盖指向其他站点的记录;CAA 一律留给用户确认。
无法安全自动写入时,按卡片提示手动添加即可。证书状态来自 Firebase 的 cert.state;若域名有 CAA 限制,需要允许 pki.goog 签发。
从 Cloudflare 切到 Firebase 的步骤
- 在「设置 → Firebase Hosting 授权」粘贴服务账号 JSON,并验证连接。
- 打开站点详情,在「上线状态」把发布平台切换为 Firebase。
- 重新部署一次,系统会创建或复用 Firebase 站点并发布当前文件。
- 到「独立域名」重新添加域名,按 Firebase 返回的记录完成解析。
- 旧 Cloudflare 域名不会自动迁移;确认新地址可访问后,再按需移除旧绑定。
怎么选
- 需要自动 CNAME、HTTPS 和单项目大量域名:优先 Cloudflare Pages。
- 已经在用 Google Cloud、Firebase 或需要 web.app 地址:选择 Firebase Hosting。
- 客户要求内容托管在 Google 基础设施上:Firebase 更合适。
- 站点数量接近 36 且不想拆项目:继续用 Cloudflare,或按业务拆分 Firebase 项目。