我在每次 Cloudflare Pages 构建后都会运行的 3 项部署后检查
我花了两个星期来调试生产环境中的错误。
其中一个错误是站点地图(sitemap)规则阻止了我的 sitemap index。另一个是图片上传的竞态条件(race condition)。这些问题只有在部署后才会出现。
现在,我在每次 Cloudflare Pages 构建后都会运行三项特定的检查。我并不使用完整的测试套件,而是利用这些快速检查来捕捉实际的故障。
我在三个使用 Astro 5 SSG 的网站上运行这些检查:aiappdex.com、findindiegame.com 和 ossfind.com。
1. Sitemap 验证
我会检查所有域名下的 sitemap-index.xml 是否返回 200 状态码。我使用 curl 来验证这一点,并且不会跟随重定向。
这帮我发现了一个之前的错误:我曾设置了一个规则,将我的 sitemap index 重定向到一个子 sitemap。在浏览器中看起来一切正常,但它却阻止了搜索引擎爬虫。
我还会检查 sitemap-0.xml。我会确保 URL 数量达到最低阈值。如果数量下降,很可能意味着我的数据流水线(data pipeline)出故障了。
2. IndexNow 提交
在站点地图检查完成后,我会运行一个 node 脚本。该脚本会读取实时的 sitemap,并将 URL 发送到 IndexNow 端点。这会通知 Bing、Yandex、Naver 和 Seznam。
如果 IndexNow 返回 403 错误,说明我的密钥验证文件缺失,或者重定向破坏了路径。立即发现这个问题可以防止索引延迟。
我在部署成功后手动运行此操作。这确保了我提交的是已经在 CDN 上实际生效的 URL。
3. Lighthouse 趋势监控
我通过 cron job 在每周一运行此检查。它运行速度太慢,不适合在每次部署后都运行。
我会检查性能(performance)、布局偏移(layout shifts)和无障碍性(accessibility)。我会观察我的 Astro SSG 网站是否存在回归(regressions)。如果分数下降,我会检查我的 Tailwind 配置或组件变更。
我不会利用这些分数来阻止构建,而是用它们来追踪趋势。
这三项检查涵盖了我实际的故障点。我并不使用可用性监控(uptime monitoring)或端到端测试(end-to-end tests)。对于部署在 CDN 上的静态网站,这些特定的检查能提供最大的价值。
来源:https://dev.to/morinaga/three-post-deploy-checks-i-run-after-every-cloudflare-pages-build-2eg1