搜索引擎收录一个页面要经过三步:抓取(Crawl)→ 渲染(Render)→ 索引(Index)。 纯客户端渲染的单页应用,问题恰恰出在中间那一步。
渲染预算是有限的
爬虫拿到的是一个近乎空白的 HTML 骨架:
<div id="app"></div>
<script src="/app.js"></script>
想看到正文,它必须下载并执行 JavaScript。Googlebot 确实能做到,但这些页面会被放进 一个独立的渲染队列,延迟从几小时到几周不等。而其他搜索引擎的 JS 执行能力更加有限。
SSR 直接把答案递过去
服务端渲染让爬虫在第一个响应里就拿到完整内容:
<article>
<h1>为什么博客一定要做服务端渲染</h1>
<p>搜索引擎收录一个页面要经过三步……</p>
</article>
抓取即索引,中间那一步被彻底跳过。
实践中的三个要点
- 正确的状态码。文章不存在时必须返回 404,而不是 200 加一个「页面走丢了」。 软 404 会消耗抓取预算,还可能拖累整站评分。
- canonical 唯一。带
?utm_source=的链接、分页的第 2 页,都要指回规范 URL。 - 首屏别抖。CLS 是 Core Web Vitals 的一部分,图片一定要写死
width和height。
内容型站点的技术选型,SEO 应该是第一约束,而不是做完之后再补的补丁。