摘要

"这一章专门解决“明明内容不差,但排名上限被卡死”的问题:页面打开慢、点着卡、交互迟钝,Google 和用户都会用脚投票。你会拿到一份独立开发最实用的“最小动作清单”,按 80/20 思路先把首页和 3 个核心流量页优化到不拖后腿的水平,重点盯住 INP(交互响应)、LCP(首屏加载)和 CLS(页面抖动)的阈值与常见坑。做完你还会留下一个可复用的性能 SOP,以后新站直接照抄。"

你先记住一句话:技术 SEO 不是“做极致”,是“别拖后腿”

独立开发时间最值钱。你不需要把每一页都优化到 100 分,但你必须保证:

  • 重要页面别慢到让用户烦
  • 交互别卡到让人点两次
  • 页面别乱跳让人找不到按钮

因为这些东西会同时影响两件事:
用户留不留得住,以及你在搜索里能不能拿到更高的上限。Google 也明确建议站长把 Core Web Vitals 做到“Good”,这对搜索和用户体验都有帮助。


Core Web Vitals 到底看什么:别背概念,先记阈值

你只需要把这三个指标当成“红绿灯”:

指标 它在测什么 Good 阈值 Needs Improvement Poor
LCP 首屏主要内容加载速度 ≤ 2.5s 2.5s–4s > 4s
INP 全程交互响应(点击/输入后多久有反馈) < 200ms 200ms–500ms > 500ms
CLS 页面布局抖动 ≤ 0.1 0.1–0.25 > 0.25

INP 已经替代 FID 成为 Core Web Vitals 的交互指标(从 2024 年开始生效)。
INP 的解释你也可以这样理解:用户点一下按钮,你别让他“等着反应”。web.dev 对 INP 的定义和计算方式也说得很清楚:它观察用户访问期间的交互延迟,最后取一个代表性的最差值(会忽略部分离群值)。


先别瞎改:你要用同一套方法定位问题

我建议你固定用三件工具,别今天 Lighthouse、明天随便测一个就开始改:

  • GSC Core Web Vitals 报告:看真实用户数据分组(Good/NI/Poor),也能看到按 URL 分组的表现。
  • PageSpeed Insights:把实验室数据 + 真实用户数据放一起看,还能给出可操作建议。
  • Chrome DevTools Performance:定位卡顿、长任务、主线程被谁占了(INP 主要靠它抓元凶)

你的流程最好固定成这样:

  1. GSC 找出最差的 URL 组(通常是模板页或工具页)
  2. 选 3 个最重要的流量页(首页 + 2 个流量页)做 PSI
  3. 对 INP/LCP/CLS 里最差的那个先下手

最小动作清单:先把“最常见的坑”一次性扫掉

下面这张表是我自己常用的“先改这些,八成就见效”的清单。

优化点 主要影响指标 你会看到的典型问题 最小改法(独立开发版)
图片没做尺寸与压缩 LCP、CLS 首屏大图加载慢、图片一加载页面抖 首屏图用现代格式、压缩;固定 width/height 或占位;首屏图别 lazy
字体阻塞渲染 LCP 首屏文字很晚才出现 减少字体文件;用 font-display: swap;只加载需要的字重
JS 太多、主线程太忙 INP、LCP 点击后没反应、输入卡顿 砍首屏 JS;拆包;延后非关键脚本;减少 hydration 压力
长任务(Long Task) INP 点击后要等很久才绘制 拆分计算;把重活放 Web Worker;分帧处理(requestIdleCallback 等)
事件处理太重 INP 点击按钮触发一串同步逻辑 先给 UI 反馈(loading/optimistic);重逻辑异步化
布局抖动 CLS 图片/广告/组件加载后整体跳 给元素预留空间;避免首屏插入未知高度内容
第三方脚本太多 INP、LCP analytics/ads/widget 拉低分数 只留必要的;延迟加载;能用 server-side 的别放前端
缓存与 CDN 没用好 LCP 静态资源每次都重新拉 静态资源强缓存;走 CDN;合理 cache-control

你不用一次做完所有,先按页面的重要性从上往下扫。


INP 实战:我通常先抓 3 类“最常见元凶”

INP 是很多工具站、Next.js 站的第一杀手。你别一上来就“优化代码质量”,先抓最常见的三类元凶。

元凶 1:主线程被 JS 占满(尤其首屏 hydration)

典型表现:

  • 页面看起来加载完了,但一点击就卡一下
  • 输入框打字会丢字或者延迟

最小改法(思路):

  • 首屏减少需要 hydration 的组件
  • 非关键组件延后渲染(比如折叠区、下方模块)
  • 大计算不要放在点击事件里同步跑

元凶 2:点击事件里做了太多同步工作

典型表现:

  • 点击按钮后,loading 迟迟不出现
  • 直到逻辑跑完才更新 UI

最小改法(思路):

  • 先更新 UI 状态(让用户知道“我收到你的点击了”)
  • 重逻辑异步化、分批处理、或丢给 Worker
  • 网络请求要有超时与降级

元凶 3:第三方脚本抢资源

典型表现:

  • 你自己代码没那么复杂,但分数就是上不去
  • PSI/Performance 里第三方占了大量 main thread time

最小改法(思路):

  • 能延后就延后(用户滚动后再加载)
  • 能少一个就少一个
  • 广告/统计别在首屏堆一排

web.dev 的 INP 指南里也把“主线程工作、事件回调、渲染开销”等方向讲得很系统,你后面要深挖可以按那个体系逐项排。


Next.js 抓取与渲染:别赌 Googlebot“帮你跑完 JS”

我见过不少 Next.js 站做 SEO 的时候犯一个低级错误:把关键内容全放到客户端渲染,然后指望爬虫“反正能执行 JS”。

现实是:你可以让 Google 渲染 JS,但你不该把关键内容和关键 SEO 元素押在这上面。Vercel 也明确建议关键 SEO 内容和标签最好通过 SSR 或静态生成,保证初始 HTML 里就有。

渲染策略怎么选(按 SEO + 性能)

渲染方式 SEO 友好度 性能上限 适合页面 独立开发建议
SSG(静态生成) 很高 很高 教程页、模板页、对比页 优先用
ISR(增量静态) 很高 内容多、需要定期刷新 内容站很香
SSR(服务端渲染) 需要实时数据的页面 控制好 TTFB
CSR(纯客户端渲染) 不稳定 取决于 JS 强交互应用 SEO 页面尽量别用

Next.js 自己的 SEO 教程里也明确说:静态生成通常对 SEO 最友好,因为首屏就是预渲染 HTML,而且对性能也更有利。

再补一句很容易忽略的:别在 robots.txt 里把渲染需要的资源(JS/CSS/API)挡了,不然爬虫想渲染也渲染不出来。


重复与规范化:技术 SEO 里最“隐蔽”的掉坑点

这块很多人不重视,但它会悄悄稀释你站内权重。

你至少要盯住这三类重复

  • 参数 URL:同内容带不同参数产生多个 URL
  • 同内容多路径:比如 /tool/xxx 和 /tools/xxx 都能打开
  • 分页/筛选页:列表页组合出一堆近似页面

最小动作:

  • 关键页面保持规范 URL(canonical 自引用为主)
  • 明确哪些参数页不需要索引(必要时 noindex)
  • 统一重定向规则(带/不带斜杠、http→https、www→non-www)

作业:把 4 个页面优化到“能用且不卡”的水平

别贪多,这章的个页我建议你就盯 4 个页面:

  • 首页
  • 3 个核心流量页(通常是:一个工具页 + 一个内容页 + 一个对比/模板页)

你需要提交的结果(像做工程一样留记录)

  • 每个页面优化前后的数据截图或记录(PSI/GSC 都行)
  • 你做了哪些改动(用清单写出来)
  • 你总结的一份“性能优化 SOP”(下个站直接照抄)

你可以用这张表当台账:

页面 优化前最差指标 主要问题 做了哪些改动 优化后结果
首页 INP/LCP/CLS 例如:JS 重、首屏图大 例如:拆包/压缩图/延后脚本 记录数值
工具页
内容页
对比/模板页