资源01 · 文档

CASE / FIRST-PARTY ENGINEERING

工程实践:静态发布如何避免版本错配

这是 Kyormar 官网自身的工程实践,不是客户案例:用可回滚发布、HTML 重验证和跨版本哈希资源解决旧页面引用已清理资源的问题。

发布 2026-08-08约 7 分钟REPOSITORY VERIFIED

案例范围仅覆盖官网静态发布链。它不代表客户数量、产品使用效果或商业收益。

现象:路由后样式消失,看起来像白屏

浏览器可能复用旧 HTML,而发布脚本已经清理旧版本的哈希 CSS/JS。旧 HTML 随后引用不存在的资源,表现为样式失效、Cookie 面板消失或内容出现异常。

第一处错误边界不在 SSR

首页已经由 Astro 构建为完整静态 HTML。问题发生在“旧 HTML → 已删除哈希资源”这一发布边界,而不是服务器没有预渲染首页。

修复:让 HTML 重新验证,让哈希资源长期可用

HTML
  Cache-Control: no-cache, max-age=0, must-revalidate

/_astro/*
  Cache-Control: public, max-age=31536000, immutable

每次发布原子切换当前版本,同时把内容哈希资源累积到跨版本共享目录。若同名哈希文件内容不同,发布直接失败,避免破坏 immutable 语义。

门禁:失败时恢复旧版本

  • 验证发布清单与目标版本一致。
  • 随机选择真实哈希资源,确认一年 immutable 缓存头。
  • 确认首页 HTML 使用重新验证缓存策略。
  • 任一检查失败,原子恢复发布前的 current 软链接。

完整运维约束保存在源码仓库的部署文档与发布脚本中;公开页面只陈述已经验证的机制。