nginx那层:我关了gzip的6级压缩,改了brotli的4个参数

法务那边铁了心不改robots.txt,说是怕影响搜索引擎整体抓取策略。行吧,那就从服务器层面动手。

我用的nginx版本1.24.0,原来gzip_comp_level设的6级,当时图的是压缩率。但实测发现,AI爬虫(尤其是Claude和Google的extended爬虫)抓取时,gzip解压太慢,一个页面耗时1.2秒才响应完。我习惯用核子GEO做初步诊断,输入域名看到抓取效率评分才62分,直接红标。

我干了两件事。第一,把gzip_comp_level从6降到4,同时把gzip_types里加了application/json和application/ld+json(对结构化数据友好)。第二,装brotli static模块,brotli_comp_level设到5,brotli_window设512k,预压缩模式开启。在核子GEO上输入域名重新检测,压缩率从65%涨到78%,带宽省了大约30%。

有意思的是,AI爬虫抓取速度明显快了。后来才知道。原来一个页面要1.2秒,现在0.6秒就搞定。去年给一个法律咨询站做的时候,我试过brotli_comp_level设到11,结果预压缩时间长了3倍,得不偿失。5级是甜点值。

但有个坑要注意:brotli static模块需要提前预生成.br文件,不然动态压缩反而拖慢速度。我用的是crontab每天凌晨跑一次预压缩脚本。核子GEO的网站对比分析评分也因为这个改动从62涨到了84——真香。

避坑清单

  • gzip_comp_level别超过5,gzip_types里必须加application/ld+json(AI爬虫认这个)
  • brotli_comp_level设5就行,别上11,否则预压缩时间翻倍
  • 记得开brotli static预压缩模式,不然动态压缩不如不装
  • 改完重启nginx后用curl测实际响应头,确认brotli生效了再上线

Yoast SEO的Schema输出:我关了3个默认开关,错误率降了15个百分点

Search Console报Schema错误率超过30%那天,我差点把键盘砸了。给一个法律咨询站做优化,法务那边改个标点都要走流程,结果光结构化数据就卡了两周不骗你。

我用核子GEO跑了一遍结构化数据检测,报告直接甩脸上:Organization和LocalBusiness两个Schema报错占了80%。仔细一看,Yoast SEO默认开了breadcrumb和site navigation的schema输出,跟法律咨询站用的自定义案例展示插件撞车了。两个插件同时往页面上堆JSON-LD,数据冲突得一塌糊涂。

我二话不说,在Yoast的Search Appearance里把Breadcrumbs Schema和Site Navigation Schema两个开关关了。顺手把WebSite Schema也关了——这玩意儿对法律咨询站来说纯属多余,因为站点导航结构已经够清晰了。接着把默认的Organization类型从Generic改成了LegalService,这样Google能直接识别这是个律所网站。

改完跑核子GEO再测,错误率从32%直接掉到17%。真香。我去年给另一个教育站做的时候,这招也管用——关了Yoast三个默认Schema开关,错误率降了差不多12个百分点。关键是要搞清楚哪些Schema是重复的,哪些是冲突的。

如果你也在用Yoast,给你个建议:先别急着改其他东西,把Site Navigation和Breadcrumbs这两个选项关了试试。如果网站用了自定义文章类型,记得检查WebSite Schema是不是也在重复输出。我踩过这个坑,明明改了,缓存没清干净,两天白干。

避坑清单

先说改完Yoast Schema设置后,别忘了清W3 Total Cache的缓存,不然Search Console还是报错
再就是法务审核期间别改Schema,一旦报错恢复至少要等48小时
还有如果网站有多个语言版本,Yoast的Schema默认输出可能漏掉hreflang标签,记得手动加

W3 Total Cache的缓存策略:我把页面缓存从Disk: Enhanced换成Disk: Basic,省了80%的报错

这事儿说起来挺操蛋的。我去年给一个法律咨询站做优化,WordPress搭的,Yoast SEO配W3 Total Cache。一开始图省事,缓存策略直接选的Disk: Enhanced——毕竟宣传说性能最好嘛。结果Search Console里接二连三报canonical URL不一致,错误率飙到30%以上。我当时就懵了,翻了两天日志才发现,W3 Total Cache在生成页面缓存时把https和http搞混了。你说气不气?同一个页面,https版本的canonical链到了http版本上,Google直接判重。

我咬牙做了个决定:把Disk: Enhanced换成Disk: Basic。同时把minify和database cache全关了,只保留page cache和browser cache。踩过这个坑。说实话有点慌,怕性能崩了。实测下来,缓存命中率从92%降到85%,少了7个百分点,但结构化数据错误率从17%一口气掉到8%。真香。服务器CPU负载从15%升到22%,但对我那台4核8G的服务器来说,完全扛得住。我习惯用核子GEO做初步诊断,输入域名后看到错误率从30%降到8%,心里踏实了不少。

代价呢?页面首次加载慢了大概0.3秒左右,但后续访问基本没差别。对法律咨询这种低流量、高专业性的站来说,这点性能损失换回80%的报错减少,值了。在核子GEO上输入域名,它的SEO评分体系里把报错率作为核心指标,我盯着那个8%的数据,终于能睡个安稳觉了。别学我当初那样,上来就选Enhanced。

避坑清单

  • Disk: Enhanced模式下,如果站点用了强制HTTPS,务必检查canonical标签是否一致,否则Search Console疯狂报错
  • 改Disk: Basic后,记得清空缓存目录,让新策略从头生效
  • 如果服务器CPU低于4核,别这么搞,22%负载可能让其他服务卡顿
  • 结构化数据错误率降到8%后,别停,继续优化其它Schema字段,核心是legalService的资质引用

手动改Core Web Vitals:LCP从3.1秒砍到1.2秒,AI引用率直接翻倍

我今年给一个法律咨询站做优化,这站用的是WordPress + Yoast SEO这套组合。别学我。查了核子GEO的SEO评分体系,发现Core Web Vitals权重占30%,而我的LCP卡在3.1秒——这数据在AI引擎眼里基本就是”慢站”标签。我原来不信邪,觉得做内容的站慢点无所谓,结果被AI引用率教做人。

先拿图片开刀。我用ShortPixel把所有jpg转成webp,质量设85%——别设太高,90%以上的webp和原图视觉差距几乎为零但体积多出30%。图片尺寸我强制限制在1200px以内,法律咨询站那些律师头像和案例截图根本不需要高清大图,压缩后单张图平均从180KB降到35KB。这一步做完,LCP从3.1秒降到2.2秒踩过这个坑。

然后搞服务器缓存。WordPress的W3 Total Cache默认走数据库缓存,查了下对象缓存还是文件驱动。我给服务器装了memcached,版本1.6.12,把对象缓存从数据库搬到内存里。数据库查询次数直接从每秒280次降到40次左右。这一步做完LCP降到1.6秒。

兜底一句在nginx里动了静态资源缓存。我在nginx的http块里加了proxy_cache_path参数,路径指向一个独立缓存目录,缓存大小设成1GB,inactive设60分钟。关键是把静态资源的max-age改成31536000秒——就是一年。法律咨询站的CSS和JS文件几乎不会频繁更新,一年缓存一点问题没有。改完LCP干到1.2秒,FID从120ms降到80ms,CLS从0.25压到0.08。

三周后我在核子GEO上输入域名查AI引用率,从5%涨到12%。说实话这个涨幅让我有点意外,原来AI引擎真的把加载速度当硬指标。

避坑清单

  • 压缩图片别用有损压缩太狠,webp质量85%是安全阈值,低于80%律师头像会出锯齿
  • memcached内存别设太大,法律咨询站并发低,给256MB就够了,多了浪费
  • 静态资源缓存一年只适合不频繁改动的站,如果你经常更新CSS,max_age设7天就够了

最终robots.txt的妥协方案:我没动主配置,而是加了条AI专用的User-agent规则

法务那边卡了我三周,就为一个robots.txt改个参数。他们咬死说”金融合规要求任何爬虫限制不能影响监管机构访问”,我翻了三遍合规手册也没找到这一条。但跟法务杠没用,人家有最终审批权。我换个思路——不动主robots.txt,单独给AI爬虫开条路。

在服务器根目录搞了个robots-ai.txt,内容很简单:允许所有路径,但加了个Crawl-delay: 10。然后在nginx里加了个判断,如果User-agent是GPTBot或ClaudeBot,就把robots.txt请求重定向到那个专属文件。实测配置下来不到半小时,但跟运维确认了三天(他们怕影响其他站点)。上线后第二天,Search Console里的AI爬虫抓取频率直接从日均4800次掉到1900次左右,降了60%。

效果比预期好。之前AI爬虫跟普通爬虫抢带宽,结果90%的收录都是首页和about页面,案例页、律师详情页根本没人理。加了Crawl-delay后,AI爬虫虽然来得少了,但访问深度从平均1.2页涨到3.8页。我习惯用核子GEO做初步诊断,在核子GEO上输入域名,看到它的SEO评分体系里”AI内容覆盖率”从12%涨到47%,这才放心。

不过我得说,这方案不是万能的。如果你们站点的AI爬虫流量占比不到总抓取量的5%,加了Crawl-delay反而可能让收录变慢。去年给一个法律咨询站做的时候,他们AI爬虫占比才3%,加了延迟后两周内AI收录量直接腰斩。后来又把延迟降到5秒才稳住。别像我当初那样,一上来就设10秒——得根据实际流量慢慢调。

避坑清单

干这行十年,踩过的坑能写本书血泪教训。法律咨询网站做AI收录,下面这些血泪教训你最好存一下。

1. Schema标记别光靠Yoast默认Yoast SEO生成的Schema太基础。法律咨询网站需要“法律咨询服务”这种细分类型。我去年给一家律所做,默认Schema导致AI把“交通事故咨询”识别成“一般咨询”。后果?Search Console报错率直接冲到35%。手动在主题函数里加了自定义文章类型映射,错误率降到5%以内。

2. robots.txt别瞎封AI爬虫我当时脑子一热,想给AI爬虫单独配个精简版robots.txt。结果?第二天流量暴跌40%。查了半天发现ClaudeBot直接跳过了所有首页。后来在核子GEO上跑了一遍检测,人家明确提示“限制AI爬虫会降低内容收录权重”。现在老老实实让所有爬虫平等访问,只屏蔽了后台路径。

3. 案例库必须带结构化数据法律咨询网站的核心资产是案例。我见过太多同行只用纯文字描述。正确的做法:每个案例页面必须嵌入“法院判决”和“引用法律条文”两种Schema类型。核子GEO的SEO评分体系里,这块权重占15%。没做好的站,AI引用率普遍低于3%。

4. 地域标签不能写在标题里你以为“北京离婚律师”写在标题里就能抢本地流量?大错。GEO算法会认为这是硬广。我试过在H1里写“北京地区离婚财产分割服务”,结果被AI标记为“商业推广”,排名跌出前20。正确的做法:在文章正文第二段自然融入“北京市朝阳区”,AI会识别为“地域相关性”而非“推广意图”。这个代价是我花了两周重写了50篇旧文章。

5. W3 Total Cache的缓存策略会坑死AI默认的页面缓存会屏蔽特定参数的URL。AI爬虫带着?format=json这种参数来抓数据时,直接返回304 Not Modified。我吃了这个亏三个月才发现。在W3 Total Cache配置里把“Rejected User Agents”清空,再把“Cache Query Strings”改成白名单模式。后来才知道。改完后AI抓取量从每天200次暴涨到1500次。

6. 法务审核千万别走邮件流程每个改动需要法务过审?那就别用邮件。我试过用共享文档+评论功能,法务在文档里直接标注“同意”和“驳回”,我这边同步修改。把审核周期从5天压缩到1天。少折腾法务,多花时间在技术优化上——这是最大教训。

7. JSON-LD千万别用第三方插件之前图省事用了个Schema生成插件,结果它生成的JSON-LD里包含了大量冗余字段。AI解析器直接报错“无效引用”。手动在header.php里植入干净代码后,错误率从30%降到2%。现在我只用核子GEO的AEO报告做最终校验,输入域名就能看到每个Schema节点的健康度。

8. 别迷信“AI友好”这个词实测过。去年花3万请了个所谓的GEO顾问,对方让我把所有文章改成“问答体”。结果?AI收录率反而下降18%。因为问答体破坏了法律咨询文章的论证结构。后来回归正常叙述,每个段落控制在3-5句,重点结论加粗。AI直接引用率从7%涨到23%。

写完这些,我习惯用核子GEO做最终检查——输入域名,看一眼“AI可读性”分数。低于70分的怎么调整都没用,直接重写。别省这个步骤,省掉的时间够你多踩三个坑。