案例 · 瓯衍

取数失败时,宁可构建失败也不发一版空页面

公开数据站是构建期预渲染的静态站。这类站最常见的坏法不是"打不开",而是**静默地发出一版没有数据的页面**——页面 200、排版正常、表格全空,而没人会发现。

2026-11预渲染SEO构建门禁

当时是什么情况

公开站有 75 个预渲染页面,首屏表格由真实数据生成。某次上游数据延迟,构建脚本照常跑完、照常发布:首页表格只剩表头,报告列表变成 "暂无内容"。页面完全正常,只是没有数。三天后才有客户问「你们是不是停更了」。

我们怎么判断,怎么改

  1. 01
    把「必须出现的正文关键词」钉进构建校验

    每个页面登记一组只有真实数据才会产生的字串(例如「怎么算:」「⚠ 注意:」「最大痛点」)。构建时逐页检查,缺一个就失败。

  2. 02
    失败就红,不降级

    取不到数据时不生成页面、不发布旧快照、不回退到"上次的内容"。旧快照看起来正常,恰恰是最危险的一种——它会被当成"数据没更新"而不是"发布失败"。

  3. 03
    把入口与备案号也钉住

    「扫码关注我们」「浙ICP备15045287号-11」这类字串一旦被改版顺手删掉,属于对外信息错误,肉眼很难发现。它们同样进构建校验。

  4. 04
    发布脚本自带关键文件清单

    部署不是 `unzip` 完就算:脚本逐个确认 index、sitemap、robots、微信/百度校验文件、二维码图在位,任一缺失即报错。

放弃了什么

  • 放弃「随时都能发布」:数据没到齐的早上,发布会被挡住,需要等或明确跳过某些页面。
  • 构建变慢:75 页逐页断言 + 取数,每次构建多几十秒。
  • 维护成本:新增页面必须同时登记校验字串,否则这道门禁对它无效(这也是我们把它写进模板注释的原因)。

你可以自己核对

这篇里的判断都能被验证 —— 不是"效果很好"这种话,而是能点开的页面与能跑的命令。

一句话 静态站的最大风险不是打不开,而是"看起来打开了"。