static-site-deploy-verify
静态站(GitHub Pages / Cloudflare Pages / 任意 CDN)推完之后做一次到位校验,专门抓"缓存名 bump 了但文件内容还是旧的"这类版本撕裂。适用于用户说"我更新了但线上还是老样子""帮我确认线上是不是最新的""推完再验一遍"。
Files2
View on GitHubSKILL.mdstatic-site-deploy-verify/SKILL.md
GitHub静态站部署后校验
何时用
- 用户反馈「我改了但线上没变」「还是上个版本」
- 刚刚推送完静态站,用户要求确认线上是最新的
- Service Worker / PWA 项目,怀疑缓存没失效
核心洞察:版本撕裂
只 bump 缓存名而不推齐文件 = 缓存名是新的、内容还是旧的,用户端会长期命中旧缓存,表现为"我改了没效果"。
修复必须两步一起做:
- 把所有不一致的文件推齐
- 把
sw.js里的const CACHE再 bump 一次(不 bump 的话用户端仍命中旧缓存)
铁律:判断线上版本用 GitHub API 查文件,不信本地 git log
MCP push_files 之类的推送不产生本地 commit,所以 git log 会停在旧版本,误判成"线上版本不明"。
要确认线上是什么版本,直接查远端文件:
curl -s "https://api.github.com/repos/<owner>/<repo>/contents/<path>?ref=main"
标准流程
1. 先跑一遍五类检查
| # | 检查项 | 做什么 |
|---|---|---|
| 1 | 漏推 | 本地有的文件远端没有 |
| 2 | 内容不一致 | 同名文件本地/远端 size 或 sha 不同(这是版本撕裂的根因) |
| 3 | SW 缓存清单 | sw.js 里列出的文件是否与实际部署的文件对齐 |
| 4 | HTML 引用 | index.html 引用的 css/js/img 是否全部存在(防 404) |
| 5 | PWA 三件套 | manifest.json / sw.js / icon 是否齐全且互相引用一致 |
2. 具体做法
# 拿远端文件清单 + size/sha
curl -s "https://api.github.com/repos/<owner>/<repo>/git/trees/main?recursive=1"
# 逐个比对本地 size
# 注意:>1MB 的文件 contents API 不返回 base64(encoding: none)
# 要改用 GET /repos/<owner>/<repo>/git/blobs/<sha>
3. 修复后必须强刷验证
改完让用户 Ctrl+Shift+R(不是 F5,F5 可能仍走内存缓存)再看。 ⚠️ 这一步必须由人在浏览器里做,AI 无法代验——本机网络能否访问目标域名跟线上是否可用是两回事。
4. 判断"到底是网络问题还是站点挂了"
nslookup <domain>
- 解析到 185.199.x → GitHub Pages 真实 IP,正常
- 解析到 31.13.x / 2a03:2880: → 这是 Meta/Facebook 的 IP 段,说明 DNS 被劫持/污染,不代表站点故障
- 全部超时 → 换手机流量或非公司网再验一次再说
Example
用户:「我更新了 TalkCal 的 css,但线上还是老样子。」
- API 查远端
css/style.css的 size,对比本地 → 发现本地 20987 B / 远端 18035 B,内容不一致 - 同时查
js/calendar.js→ 同样不一致 - 检查
sw.js的const CACHE→ 已经是talkcal-v2.6.1(说明之前只 bump 了缓存名没推内容) - 修复:推齐两个文件 + CACHE bump 到
talkcal-v2.6.2 - 等 CDN 自动重新部署,跑一遍第 1 步的五类检查确认全部对齐
- 让用户 Ctrl+Shift+R 验收
坑位清单
curl在公司网络下可能需要--noproxy '*',否则拿到假的连接失败- 本机测不到的域名不代表线上挂了(
*.workers.dev/*.supabase.co常被公司 DNS 拦) - 改
sw.js缓存名但忘记推文件内容 = 白改;推了内容但忘记 bump = 用户端还是旧的 - 本地 git 历史与线上 API commit 分叉(如
ahead 1)时,先确认内容一致再决定是否git reset --hard origin/main,不要擅自 reset
隐私与边界
只读远端公开文件 + 本地文件比对。不读取、不输出任何 token 明文;PAT 走本机凭据管理器。