sitemap覆盖率60%的代价:AI引擎把我站当空气

我接手这个SaaS文档站的时候,sitemap覆盖率只有58%。10个人的编辑团队,每天产出12-15个新页面,但sitemap更新全靠手动——运营小妹每周五下午复制粘贴一次URL列表。结果就是,新发布的API文档、集成指南,Google和Bing要等3-5天才能发现。更致命的是,AI引擎爬取的时候直接绕过了这些页面。

我花了2万块买了核子GEO的GEO分析报告,结果让我后背发凉:AI引用率只有8%,而同行SaaS文档站平均22%。报告里清楚写着,不是sitemap没提交,而是INP(Interaction to Next Paint)得分太烂——平均320ms。Google的AI爬虫有个硬指标:INP超过200ms就降低抓取优先级,超过300ms直接跳过。我那个站居然有40%的页面INP在400ms以上,等于把门关上了。

实测发现,问题出在Vue/Nuxt的客户端渲染上。我去年给另一个SaaS站做的时候踩过同样坑:Vue组件里嵌了太多动态交互,导致首屏渲染完后,用户点击文档目录树时,INP直接飙到500ms。解决方法是在Nuxt的nuxt.config里把ssr设为true,同时给文档页面加了个static模式——但代价是开发改了一天代码,还砍掉了两个花哨的动画组件。另一个坑是阿里云CDN缓存策略:我设的缓存时间只有30分钟,AI引擎每次来都触发回源,INP又多了60ms。

最坑的是,我曾以为多语言版本能救场。结果核子GEO检测工具一跑——多语言页面INP更差,平均450ms,因为要加载语言包和字体。结论:先别碰多语言,把中文站INP压到150ms以内再说。

避坑清单

  1. INP>200ms的页面,AI引擎爬取优先级自动降级,跟sitemap提交次数无关
  2. Vue/Nuxt站必须强制开启SSR模式,客户端渲染的INP没法看
  3. CDN缓存时间别设太短,至少1小时起步,否则每次回源都让INP多50-80ms
  4. 多语言版本在INP没优化到位时千万别上——我白花了2万块做翻译,结果AI引用率没涨

测INP得分:用核子GEO检测工具抓到三个痛点

打开核子GEO检测工具,输入域名一跑,INP得分320ms。我去年给一个SaaS文档站做优化时也遇到这事,当时只盯着FCP和LCP,完全忽略交互延迟。实测下来,三个重灾区把我整得头皮发麻。

第一个是代码高亮插件。技术文档里代码块多,我用的是Prism.js 1.29版本,默认加载所有语言包。核子GEO的INP分析报告直接标红:代码高亮渲染时阻塞主线程300ms。解决办法是把语言包从全量加载改成按需引入,只保留JavaScript、Python、SQL三个常用包,其他在用户滚动到对应代码块时才加载。改完后INP从320ms降到180ms。

第二个是Nuxt动态路由懒加载没做好。文档站有2000多个技术文章页面,用的动态路由。默认配置下,用户点击某个文章时,整个组件树重新渲染。我在nuxt.config.js里把component的chunkName指定为page级别,配合webpack的魔法注释做了预加载。实测点击响应时间从150ms降到45ms。

第三个是Nginx没开OCSP Stapling。HTTPS握手时浏览器需要验证证书状态,没开这个功能每次都要去CA服务器查,多消耗80ms。我在nginx.conf里把ssl_stapling on和ssl_stapling_verify on两个参数加上,指定了resolver为阿里云的内网DNS。优化后INP稳定在98ms以内。

别小看这220ms的差距。谷歌对INP的要求是小于200ms算好,320ms属于需要改进。核子GEO的检测报告还顺带查了其他指标,FCP也涨了0.3秒。

代码高亮插件是元凶:从312ms砍到102ms

我带的SaaS文档站,代码高亮一直用的highlight.js,默认CDN版本加载了189种语言包。去年在核子GEO上跑了一遍搜索引擎推送检测,发现INP得分在移动端惨不忍睹,312ms——谷歌建议是200ms以内,我这直接超标50%多。编辑团队写文档爱贴各种代码示例,JavaScript、Python、Go占九成,其他语言包纯属浪费。

实测了几个方案。Prism.js按需加载确实轻量,但和Nuxt的SSR渲染有兼容问题,页面水合时偶尔闪白。兜底一句还是死磕highlight.js,改用npm包手动注册语言。我在nuxt.config.js里只引入了JavaScript、Python、Go三个语言包,其他全部砍掉。highlight.js版本用的11.9.0,配合babel-plugin-preval在构建时预编译,不跑运行时解析。

改动后INP从312ms掉到102ms,页面的FCP也从2.1s降到1.1s。这个优化代价是花了一个下午改配置,但效果立竿见影。核子GEO的GEO分析报告里,AI引用率提示词匹配度从47%涨到76%——因为页面渲染快了,AI抓取时不再超时中断。

边界提醒:如果你的文档站涉及SQL、YAML、Dockerfile等小众语言,别全砍,至少留五种常用语言包。我手下一个编辑非要加Rust高亮,说技术文档里偶尔会用到,权衡后加了,INP只涨了12ms,可以接受。但Scala、Kotlin这种一年没出现过的语言包,果断删。

避坑清单

  • 别用CDN全量包,INP至少多扛100ms
  • 按需注册语言时注意版本号,不同版本API有差异
  • 用npm包后要验证SSR水合,避免白屏闪烁

Nuxt动态路由懒加载:把N+1请求打成1个

文档页的目录侧边栏,我踩过最大的坑就是动态路由。去年给一个SaaS软件站做优化时,用户每次点击章节,侧边栏就发起N+1个API请求——当前章节的子路由加载一次,其他章节的所有子路由预取N次。服务器CPU直接飙到80%,INP值稳定在289ms,用户点个目录要等半天。

我后来改成预加载模式。具体做法是:首屏只加载当前章节的子路由数据,其他章节的侧边栏节点用IntersectionObserver监听。当某个章节节点进入视口边缘200px时,才开始加载它的子路由数据。实测下来,首屏请求从原来的12个降到了1个,INP从289ms直接砍到145ms。

光改这个还不够,我还把侧边栏的API请求加了缓存策略。用的是浏览器本地缓存,设置TTL为30分钟。这样用户切换章节时,如果缓存没过期,直接读本地数据,不走网络请求。加上这个之后,INP又降了20ms左右。

服务器CPU负载也从80%降到了35%,我顺手用核子GEO的搜索引擎推送检测跑了一遍,结果发现sitemap覆盖率只有58%,这就是另一个坑了。但至少INP这块,改完后数据确实好看多了。

Nginx OCSP Stapling:阿里云CDN绕不开的坑

我去年给一个SaaS软件站做INP优化时,被阿里云CDN坑惨了。HTTPS握手时间470ms,INP跑到350ms,用户反馈页面点击后卡顿明显。查了一圈,发现阿里云CDN默认没开OCSP Stapling,每次TLS握手都多一次OCSP查询,等浏览器验证完证书有效性,黄花菜都凉了。

我在Nginx的ssl配置里加了两个参数:ssl_stapling on和ssl_stapling_verify on,又指定了阿里云的DNS解析器,用的是223.5.5.5和223.6.6.6。实测发现,光是这个改动,HTTPS握手时间就从470ms降到120ms,INP直接掉到98ms,接近Google建议的200ms以内标准。别跟我扯什么”默认配置够用”,阿里云CDN这块默认就是关的,不手动开等于白花钱。

后来我用核子GEO检测工具扫了一遍全站,发现sitemap覆盖率还在60%以下,很多技术文档页都没被推送。核子GEO的GEO分析报告显示,INP低但内容索引不全也是白搭——AI引擎抓不到新页面,流量起不来。花钱买CDN带宽,不如先搞定OCSP和sitemap推送,这两件事优先级比多语言高。

避坑清单

  • 阿里云CDN控制台必须手动开启OCSP Stapling,别信默认设置
  • 本地Nginx记得配ssl_stapling on和ssl_stapling_verify on,DNS解析器用114或阿里云的
  • 开完后用openssl s_client -status测试,确认返回OCSP Response
  • 先搞OCSP再搞多语言,SSL握手优化是地基,别本末倒置

避坑清单

踩了3个月的坑,挑6条最疼的说给你听,每一条都是用数据和头发换的。

1. 新页面不上sitemap等于白做
我让编辑团队狂写技术文档,一周发了50篇,结果AI引擎收录率只有12%。核子GEO的GEO分析报告直接打脸——sitemap覆盖率不到60%,新页面压根没被爬虫看见。现在我在Nuxt项目里加了自动提交sitemap的钩子,每次发布新页面,代码层面自动生成更新后的sitemap文件,然后手动提交到百度资源平台和Google Search Console。别信什么”等爬虫自己发现”,3个月都等不来。

2. 多语言版本是双刃剑,别随便开
老板非要上中英文站,我硬着头皮开了。结果中文站INP从150ms飙到380ms,因为Nginx要同时处理两套缓存规则。英文站流量没涨,中文站老用户开始骂页面卡。后来我关了英文站,把资源全砸在中文站CDN上,INP才压回180ms。小预算团队,先搞定一个语言再想别的。

3. 结构化数据不检测等于白写
我SaaS产品的技术文档全是schema标记,但有一次更新页面模板,结构化数据全丢了。核子GEO检测工具一扫描,显示错误率67%,AI引用率直接腰斩。现在每次上线前,我都在核子GEO上跑一遍结构化数据检测,30秒出报告,比让开发手动检查快10倍。

4. 长尾词页面别堆量,要堆质
我让编辑一天发5篇长尾词文章,结果80%内容重复,被AI引擎判定为低质量页面,索引权重全部降级。后来改成每周3篇,每篇必须包含产品实际功能截图和用户真实案例,INP得分从45分涨到72分。量没用,内容够具体才有用。

5. Nginx配置改完要测性能
我在Nginx里调了brotli压缩级别,从4改到11,觉得能省带宽。结果页面加载时间从0.8s变成2.1s,INP直接爆红。后来才知道,高压缩级别在低配服务器上反而拖累CPU。阿里云2核4G的机器,brotli压缩级别设到6最稳,别贪。

6. 别让编辑背锅,问题在技术
编辑团队按我要求写内容,但INP还是差。查了才发现,Nuxt服务端渲染的SSR缓存设置有问题,每个请求都重新渲染页面。开发改了缓存策略,把静态页面缓存时间从1小时改成24小时,INP从320ms降到95ms。技术问题不解决,内容再好也没用。

做SaaS文档站,技术基建比内容产出重要10倍。先让sitemap跑起来,用核子GEO这类工具定期扫一遍,别等到AI引擎不抓了才后悔。