Firebase Hosting 免费额度适合谁(2026)

Firebase Spark 免费档:10 GB 存储 + 每月 10 GB 流量(外加每天 360 MB 软上限)。用页面重量公式、真实 Blaze 单价和预算配置判断你是否够用。

Firebase 的 Spark 免费档是静态托管里最大方的之一,但 Google 自己的文档把流量额度拆成两个数字——每月 10 GB 总量,再加每天 360 MB 软上限——这正是大家搞不清自己的站够不够用的原因。这篇把这些数字翻译成真实 PV,教你怎么测自己的出流量,并给出 Blaze 不被意外扣费的预算配置。

一句话结论

截至 2026 年 6 月,Spark 档给你 10 GB 文件存储每月 10 GB 流量,在此之上还有 每天 360 MB 的软上限。自定义域名、免费 SSL、全球 CDN、preview channel 全都含在里面。日 PV 在约 1 万以下、资源大小正常的内容站,Spark 可以一直用下去。只有当你加 Cloud Functions、Cloud Run rewrite,或者流量长期顶破每日上限时,才需要 Blaze。唯一的”免费”陷阱:任何一天都别超过 360 MB,因为每日和每月两个数字同时生效。

让所有人犯迷糊的两个数字

Firebase 把 Spark 的流量额度用两种方式表述,而且两个都会被强制执行:

上限数值(2026 年 6 月)重置谁会先撞上
存储共 10 GB大型媒体库、未压缩图片
流量(月)每月 10 GB按月整月的稳定流量
流量(日)每天 360 MB每日,UTC 0 点某一天突然爆量

在 Spark 下超额不会扣你钱——它会直接断你。撞到每日上限,Hosting 返回 quota 错误,到 UTC 0 点重置;月流量总量用完,站点会被停用到下个月。几乎所有”我火了一下就被扣 400 美金”的故事,都是 Blaze 上的 Cloud Functions 或 Firestore,跟 Spark 上的 Hosting 没关系。

快速判断:Spark 适合你吗?

下面几条都成立,你就用得很宽松:

  • 日 PV 在约 1 万以下,资源大小正常。
  • 站点总大小不超过 10 GB(内容站基本都满足)。
  • 没有哪一天会把流量顶到 360 MB 以上。
  • 你不需要 rewrite 到 Cloud Run / Cloud Functions(那些必须 Blaze)。
  • 首访的平均单页重量在 ~500 KB 以下(文本 + 已缓存图片 + 已缓存字体)。
  • 某一天反常爆量、站点临时返回 quota 错误,你也能接受。

对绝大多数独立内容站和 SaaS 落地页来说,这几条会一直成立。需要 Cloud Functions、Cloud Run rewrite,或预期流量长期超过每日上限时,再升 Blaze。

开始前准备

  • Firebase Console 打开项目,能看到当前计划。
  • 装好 firebase-tools,方便从 CLI 拉用量:npm install -g firebase-tools
  • 测量前先知道 build 输出大小(du -sh dist/)。

实操步骤

1. 测量平均单页重量

Chrome DevTools → Network → 刷新,看底部的传输总和。或者用 curl 估算 HTML 加关键资源:

curl -sL -o /tmp/page.html https://yourdomain.com/articles/some-slug/
wc -c /tmp/page.html
# 45000  (45 KB HTML)

# 加上 immutable 的缓存部分(一个访客只付一次):
curl -sIL https://yourdomain.com/_astro/index.abc123.css | grep -i content-length
curl -sIL https://yourdomain.com/_astro/main.def456.js   | grep -i content-length

内容站带 hash 资源时,回头客单页重量常在 30-80 KB;首访在 200-500 KB。

2. 同时算日流量和月流量

粗公式:

daily_MB = (first_visits * first_visit_KB + repeat_visits * cached_visit_KB) / 1024
         + sitemap_等杂项

500 PV / 天的博客举例:

first_visits = 300 * 400 KB  = 120000 KB ≈ 117 MB
repeat       = 200 *  60 KB  =  12000 KB ≈  12 MB
日合计                        ≈ 129 MB/天   ← 远低于 360 MB/天
月合计(x30)                 ≈ 3.9 GB/月   ← 远低于 10 GB/月

两条轴都要看。日均 200 MB 的站对每日上限很宽松,但折算到月是 ~6 GB——仍然舒适。而某天突然冲到 400 MB 的站,即便月总量很小,也会撞破每日上限。

3. 一周后看真实数字

Firebase Console → Hosting → Usage,或者用 CLI:

firebase hosting:sites:list
# 列出你的 site,仪表盘 URL 里有每日带宽

# 或直接拉 Cloud Monitoring 指标:
gcloud monitoring time-series list \
  --filter='metric.type="firebasehosting.googleapis.com/network/sent_bytes_count"' \
  --interval-start-time=-P7D --format=json | jq '.[].points'

4. 开预算告警

Firebase Console → Project Settings → Usage and billing → Details & Settings → 设 $1 预算,50% / 90% / 100% 告警。Spark 也建议加,将来升级了不至于裸奔。

5. 升 Blaze 后设真正的花费上限

GCP Console → Budgets & alerts → Create budget。Alert thresholds 不会自动断流,只会发邮件。要真正断流,用 Google 文档里公布的”Pub/Sub topic + Cloud Function 关闭计费”配方:

# budget-action.yaml 示例
budget:
  displayName: hosting-cap
  amount:
    specifiedAmount: { currencyCode: USD, units: 10 }
  thresholdRules:
    - thresholdPercent: 0.5
    - thresholdPercent: 0.9
    - thresholdPercent: 1.0
  notificationsRule:
    pubsubTopic: projects/your-project/topics/billing-alerts
    disableDefaultIamRecipients: false

6. 大批量发内容前审一次 build 大小

CI 里加个守卫:

TOTAL=$(du -sb dist/ | cut -f1)
LIMIT=$((10 * 1024 * 1024 * 1024))   # 10 GB
if [ "$TOTAL" -gt "$LIMIT" ]; then
  echo "build 输出超过 Spark 10 GB 天花板"; exit 1
fi

7. 图片打包前先压缩

一张 2 MB 头图大约 180 次访问就能吃光 360 MB 的每日上限:

# sharp 通过 Node 脚本或 astro-imagetools
npx sharp-cli --input "public/raw/**/*.{jpg,png}" \
              --output "public/img/" \
              --resize 1600 \
              --format webp \
              --quality 82

Blaze 上 Hosting 到底多少钱

怕账单失控,让很多人在 Spark 上待得比实际需要的久。Blaze 上 Hosting 这一项其实很小。截至 2026 年 6 月:

资源免费额度(Blaze)超额单价
存储10 GB$0.026 / GB
数据传输每月 10 GB$0.15 / GB

Blaze 的免费月额度(10 GB 流量)和 Spark 是同一个数字,所以单看 Hosting 这个产品,升到 Blaze 在你跨过 10 GB/月之前不会改变账单。一个月出流量 30 GB 的站,只为超出额度的 20 GB 付费:20 × $0.15 = $3.00/月。Blaze 上真正的风险从来不是 Hosting,而是忘了同一个项目里的 Cloud Functions、Firestore、Cloud Run 现在都按用量计费。

执行检查清单

  • du -sh dist/ 输出远低于 10 GB。
  • 首访和回头客的单页重量都测过。
  • 日流量估算低于 360 MB 的 50%,月流量低于 10 GB 的 50%。
  • Spark 阶段也配好预算告警。
  • 图片流水线产出压缩过的 .webp / .avif 头图。

上线后验证

  • 7 天后 Firebase Console → Hosting → Usage 与估算误差 ~25% 以内。
  • 项目日志没有 “Quota exceeded” 事件。
  • 模拟触发 50% 阈值时收到告警邮件。

容易踩的坑

  • 把 Hosting 流量和 Firestore / Functions 流量混在一起算——它们是分开计费的。
  • 只盯着月总量,漏了每天 360 MB 的上限。月用量不大也可能在尖峰当天撞破每日上限。
  • 没压缩的大图几个小时就把每日额度吃光。
  • 在 Spark 下加 rewrite 到 Cloud Functions——那些调用会失败,Functions 要求 Blaze。检测:被重写的路径返回 500。
  • 直接 hot-link 大视频到 bundle,而不是用 YouTube/Vimeo。视频是最快炸掉额度的方式。
  • 忘了 preview channel 和所有 site 共享同一份项目级配额——Firebase 按项目计流量,不是按 site,也不是按 channel。

FAQ

  • Spark 上免费额度超了会怎样?: 撞到每天 360 MB 上限,站点返回 quota 错误,到 UTC 0 点重置;用完每月 10 GB 流量总量,站点会被停用到下个月。两种都不会自动扣钱——Spark 是直接断流而不是计费。
  • 免费档包含自定义域名和 SSL 吗?: 包含。自定义域名、自动免费 SSL 证书(Spark 用 GROUPED 证书类型)、全球 CDN 在 Spark 下都不要钱。
  • 免费档能用 preview channel 吗?: 能,包括独立 URL。它们和正式站点共享同一份项目级的存储和流量配额。
  • 到底是每天 360 MB 还是每月 10 GB?: 两个都是,而且都会被强制执行。每日上限挡的是某一天突然爆量;每月总量管的是整月稳定流量。两个都遵守,你才一直免费。
  • 什么时候该升 Blaze?: 需要 Cloud Functions 或 Cloud Run rewrite,或者稳定流量顶破每日上限的时候。Blaze 按用量付费,Hosting 部分本身很便宜。
  • Blaze 上 Hosting 单价多少?: 流量在每月 10 GB 免费额度之外是 $0.15/GB;存储在 10 GB 免费之外是 $0.026/GB。每月出流量不到 10 GB 的站还在免费额度内,所以 Hosting 这一项实际上是 $0。

相关阅读

标签: #独立开发 #Firebase #部署 / 托管 #变现