博客既有非常静态的部分,也有天然需要动态服务的部分。
文章正文、标题、分类、标签和发布日期都适合在构建时生成;阅读量、评论和后台审核则需要数据库与 API。
内容层保持静态
首页卡片和文章详情页都直接由 Astro 输出 HTML。动态统计最初显示为 —,浏览器加载后再填入真实数字。
这意味着即使 API 暂时不可用:
- 标题仍然存在;
- 正文仍然存在;
- 分类和标签仍然存在;
- RSS 和 Sitemap 仍然有效。
动态服务只负责动态数据
独立 Go 服务只处理阅读统计、评论提交、评论审核和管理员会话。
它不负责文章正文,也不负责渲染整个博客页面。这样边界更小,后续维护起来也更容易。
失败时应该优雅退化
阅读量接口失败时保留 —,而不是显示误导性的 0;评论接口失败时正文照常阅读,只提示评论暂时不可用。
对于内容站,我更看重这种“核心体验不会一起倒下”的结构。
Discussion
评论
—评论审核通过后公开显示;邮箱不会公开。