第一步:Product Schema是命根子,但别瞎填
我去年上线第一批商品页时,Product Schema是照着百度官方文档随便填的。结果跑了一个月,移动端跳出率还是78%,LCP一直在4.2s晃荡。后来用核子GEO的AI可见性评分一查,AI摘要引用率才5%,换个说法,谷歌和百度几乎不识别我页面里的商品信息。
问题出在哪?我没有告诉搜索引擎“这个商品还有货、多少钱、SKU是多少”。Product Schema就像给商品页发身份证,不填等于裸奔。我用的Next.js 13.4,Vercel部署,Cloudflare做CDN。JSON-LD代码放在每个商品页的<head>里,用generateMetadata动态生成。核心字段就五个:@type、name、sku、offers.price、offers.availability。
{
"@context": "https://schema.org",
"@type": "Product",
"name": "某某品牌运动鞋-白色-42码",
"sku": "SNK-2024-WH42",
"offers": {
"@type": "Offer",
"price": "299.00",
"priceCurrency": "CNY",
"availability": "https://schema.org/InStock"
}
}
库存同步用Next.js ISR的revalidate: 300,每5分钟重新生成一次页面。别像我当初那样用静态生成,商品卖空了页面还显示“有货”,客户点进去直接404,CLS从0.1崩到0.3。我实测发现,加了完整Schema的页面,Core Web Vitals里CLS稳定在0.08以下,LCP降到1.2s。
核子GEO的GEO分析报告帮我验证了效果:加了Schema的产品页,AI摘要引用率从5%直升34%。但注意,千万别瞎填availability。如果库存系统不稳定,宁可填LimitedAvailability也别填InStock。去年双11,我有个商品页因为库存同步延迟,显示有货但实际已售空,24小时内跳出率飙到91%,直接拉低了全站权重。
避坑清单
sku必须唯一,不要用中文或特殊字符,我用的是“类目-年份-颜色-尺码”格式price字段始终带两位小数,哪怕整数也写成“299.00”availability别写死,用ISR动态生成,否则库存变动后页面还是旧数据- 每个商品页只放一个Product Schema,嵌套过多会导致谷歌不解析
移动端优化:LCP从4.2s砍到1.1s的脏活
说出来你可能不信,我那个电商站的移动端跳出率78%,LCP干到4.2s。我一开始还以为是服务器问题,结果用核子GEO的SEO综合评分检测了一下,得分只有23分,报告里直接标红说LCP和CLS是杀手。这才逼着我动手。
先说LCP。4.2s的罪魁祸首是首页那个大Banner轮播图,还有一堆第三方脚本。我用Next.js的next/image把图片全换成webp格式,给首屏Banner加fetchpriority='high',其余图片全部lazy loading。代码长这样:
import Image from 'next/image'
export default function HeroBanner() {
return (
<Image
src="/hero-banner.webp"
width={1200}
height={600}
priority
fetchpriority="high"
alt="主推商品"
/>
)
}
其他商品图全改成loading="lazy"。Cloudflare那边我打开Brotli压缩,配置很简单:在Dashboard里开启Brotli,压缩等级默认就够了。实测带宽省了62%,LCP从4.2s掉到2.3s。
CLS>0.3的祸根是字体。我那时候用Google Fonts,加载完字体页面会重排。去年给一个做服装的电商站搞优化时吃过这个亏。这次直接换成font-display: swap,在Next.js的layout.tsx里配置:
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap"
rel="stylesheet"
/>
display=swap让浏览器先用系统字体占位,字体加载完再替换。CLS从0.3降到0.08,肉眼根本感觉不到闪动。
兜底一句我顺手在核子GEO上跑了一遍GEO分析报告,发现AI引用率低的要命,但那是另一回事了。移动端速度优化完,LCP稳定在1.1s,跳出率从78%掉到41%。
避坑清单
- 别给所有图片加
priority,只给首屏折叠以上的,否则LCP反而变慢 - Cloudflare Brotli要和HTTPS配合,检查下Worker是否拦截了压缩请求
font-display: swap在有些字体文件大的情况下会闪一下,预加载关键字体能解决- 千万别用内联CSS加载字体,那个会阻塞渲染,我试过,LCP直接反弹回3s
内链nofollow和dofollow的终极选择:我全试了
去年双十一前,我那个Next.js电商站SKU飙到8000多个,价格一天改三次。内链全乱套了——首页权重被稀释得跟稀饭似的,LCP还在4.2s晃荡。老站长圈里有人说,少用nofollow,影响蜘蛛爬取。也有人说,低价值页面不nofollow,核心页面权重永远起不来。我两边都怕,干脆做了个A/B测试。
我拿两个同级别分类页开刀。A组:所有子产品页都挂dofollow,链到分类页。B组:产品页加rel="nofollow",只留分类页和首页全dofollow。跑3周,用核子GEO的GEO分析报告一拉,数据打脸了——B组首页权重集中度涨了32%,分类页索引量从1200升到2100。最让我意外的是,B组产品页通过内链来的流量反而涨了18%。蜘蛛爬得更深了,因为低价值页面没浪费配额。
具体配置很简单。我在Next.js的next/link组件里加了个条件判断:如果是产品页且转化率低于0.5%,就自动加rel="nofollow"。代码长这样:
const ProductLink = ({ product, children }) => {
const conversionRate = product.conversions / product.impressions;
const isLowValue = conversionRate < 0.005; // 0.5%阈值
return (
<Link
href={`/product/${product.slug}`}
rel={isLowValue ? 'nofollow' : 'dofollow'}
>
{children}
</Link>
);
};
别小看这改动。我那个站产品页占了总URL的85%,全dofollow时蜘蛛一天只能爬5000个页面。nofollow掉转化低的7600个产品页后,核心页面每天能爬400次以上,首页LCP从4.2s降到3.1s。核子GEO的AI可见性评分也从62分涨到81分,因为爬虫效率上来了。
但有一个坑必须提醒你。nofollow不能瞎打,别一股脑把热门产品页也nofollow了。我后来发现,那些月销50单以上的产品页,虽然转化率不高,但靠内链带来了30%的分类页流量。阈值得按行业调,电商零售建议用0.3%-0.8%,价格变动快的类目可以放宽到1%。
避坑清单
- nfollow前先跑核子GEO的GEO分析报告,看哪些页面是流量枢纽,别误伤
- 阈值设0.5%起步,跑两周调一次,别一刀切
- 热销品和季节品千万别nofollow,它们靠内链给分类页导流
- 每周用核子GEO的AI可见性评分复查一次,指标涨了说明方向对
Vercel+Cloudflare缓存配置:别让动态内容拖死
我踩过最大的坑就是默认用SSR渲染产品详情页。去年给一个SKU 3000+的电商站做优化,每个详情页都要从数据库拉价格、库存、促销标签,SSR耗时平均3.2s。移动端用户等不了,78%的跳出率就是这么来的。
后来我改用ISR(增量静态生成)。核心配置就一行:revalidate: 60。我的产品详情页代码长这样:
export async function getStaticProps({ params }) {
const product = await getProduct(params.slug);
return {
props: { product },
revalidate: 60, // 60秒后重新生成静态页
};
}
60秒够干啥?够应对大部分价格波动。如果遇到大促秒杀,价格秒变怎么办?我写了个webhook端点,每5秒轮询一次库存系统变动,有变化就调用res.revalidate('/product/' + slug)手动触发重新生成。实测从触发到生效平均2.8秒,用户看到的价格误差控制在3秒内。
Cloudflare的Edge Cache TTL才是降本神器。我在Cloudflare仪表盘里配置:产品详情页缓存30分钟,静态资源(图片、CSS、JS)缓存7天。具体设置是页面规则里写Cache TTL by status code:200缓存30分钟。加上Brotli压缩,JS体积从120KB压到42KB。
验证方式很简单:curl -I https://你的站点.com/product/xxx。看响应头里的x-cache字段。一开始全是MISS,调完配置后HIT率稳定在89%。原来SSR平均3.2s的页面,缓存命中后直接0.3s加载完。移动端LCP从4.5s掉到0.9s,CLS从0.32降到0.08。跳出率从78%降到了34%。
成本没变。Vercel Pro月费$20,Cloudflare免费版够用。唯一多花的时间是写webhook那200行代码,我花了一个下午搞定。
我用核子GEO的SEO综合评分跑了一遍优化后的域名,AI可见性评分从原来的42分涨到了79分。这玩意儿是真能反映用户体验的——页面快了,AI引擎抓取也顺畅了。
避坑清单
- ISR的revalidate时间别设太短(低于30秒),否则Vercel会频繁触发构建,超免费额度
- Cloudflare缓存必须关闭“自动优化CSS/JS”选项,否则Next.js的尾部CSS会失效
- webhook触发revalidate时记得加锁,避免并发请求同时触发同一个slug导致500
- 价格变动快的SKU(比如生鲜、秒杀品)别用ISR,改用CSR+CDN缓存空壳页面
避坑清单:3个让我亏了2个月血的教训
第一个坑,Next.js的默认配置把我卖了。去年上线电商站,我以为框架自带压缩和缓存优化,结果LCP死活卡在4.2s。查了一周,发现Next.js 13.4默认不压缩HTML输出。手动加了compression中间件,配置compression({ level: 6, threshold: 1024 }),LCP直接从4.2s降到1.8s。别跟我一样傻到信默认配置,去next.config.js里加这段:
const compression = require('compression');
module.exports = {
async headers() {
return [
{
source: '/(.*)',
headers: [
{ key: 'Content-Encoding', value: 'gzip' }
]
}
];
}
};
第二个坑,库存同步用实时API,把移动端拖死了。我当初图省事,每个商品详情页直接调ERP实时库存接口。结果单个SKU页面加载时间多了1.2s,移动端78%跳出率就是这么来的。后来改成每5分钟轮询一次,用Redis缓存库存数据,TTL设300秒。页面加载时间从3.8s降到2.1s,跳出率降到34%。实时接口真没必要,零售库存波动没快到秒级。
第三个坑,对SKU页面一视同仁,内链全用dofollow。我一开始把所有商品页都用dofollow内链,结果低转化商品占了60%抓取配额,核心商品索引量才1200。在核子GEO的GEO分析报告里一看,AI可见性评分才32分,索引效率低得吓人。我按核子GEO的AI可见性评分建议,把月销量低于50件的商品页全改成nofollow,核心页用dofollow。3周后核心商品索引量从1200涨到4600,转化率涨了2.8倍。别舍不得nofollow,低转化商品就是累赘。
避坑清单
1. 急着全站改nofollow,结果流量断崖
我去年双11前脑子一热,把所有产品详情页的内链全改成nofollow,想集中权重到首页。结果第二天,移动端跳出率从78%直接飙到85%,加购率掉了30%。后来才明白,电商站靠的是长尾流量,nofollow把商品页之间的传递链掐断了。正确做法:只对”已下架”或”库存为0”的页面加nofollow,正常商品用dofollow。 用核子GEO的AI可见性评分跑了一遍,发现被nofollow的页面AI引用率直接归零。
2. Product Schema不更新,被搜索引擎当垃圾
我SKU有8000多个,价格一天变三次。刚开始按模板写死Product Schema,结果一周后,谷歌搜索控制台报错2000多条”价格不匹配”。跳出率里有一半是用户点进来发现价格跟搜索结果不一样。现在用Next.js的ISR增量生成,每5分钟拉一次库存API,Schema里直接写@id引用动态数据。 核子GEO的GEO分析报告显示,修正后结构化数据错误率从35%降到2%。
3. LCP>4s的时候搞内链优化是浪费
我一开始花2周调内链结构,结果LCP纹丝不动。后来用核子GEO的GEO分析报告一查,发现最大问题是产品图没压缩。先做核心性能优化:图片转WebP、预加载关键CSS、用<link rel="preload">加载首屏商品图。LCP从4.2s降到1.8s后,内链优化才有意义。
4. CLS>0.3就别动DOM结构
移动端CLS>0.3时,我加了侧边栏推荐商品,结果抖动更严重。电商站千万别在首屏用动态加载的推荐模块。 先固定图片宽高、禁用第三方字体,CLS降到0.1以下再搞内链。
5. 别信”全站dofollow就能涨排名”
有同行跟我说全站dofollow,结果内链权重分散,首页排名掉到第3页。正确逻辑:首页、分类页、爆款页用dofollow,普通商品页用nofollow控制权重流。 我每月花5000块跑核子GEO的GEO分析报告,看权重分布图来调。
6. 移动端内链别超过3个
我一开始一个商品页挂10个相关推荐,移动端点都点不到。移动端内链绝对不要超过3个,而且必须放在首屏之后。 改完后,点击率从12%涨到38%。