这个笔记记录一下我的博客在页面渲染策略上的一个核心调整:既然项目本身更适合 SSG,那么就不应该再把主页面做成整页 client:only。
最开始我的博客虽然使用了 Astro,但是几个主页面依然是整页 client:only="react" 的方式在跑。
这种写法最大的问题是:
这个站点本质上是一个博客 / 作品集 / 知识库站点。
它的特点比较明确:
因此它更适合 SSG (Static Site Generation),也就是在构建阶段直接生成 HTML。
选定这个方向之后,优化原则就很清楚了:
client:only 的问题页面级 client:only 的优点是省事。
因为很多不兼容服务端渲染的逻辑都可以先不处理,只要浏览器里能跑就行。
但是它的代价也很直接:
对 Astro 这类项目来说,这其实是方向上的浪费。
这次没有把 React 全部拿掉,而是做了一个更符合 Astro 的取舍:
client:only这个调整不是“不要 React”,而是“不要让整页内容都等 React 启动以后才出现”。