JSON-LD是当前唯一能稳定触发富展现的格式,因Google和Bing仅对JSON-LD做完整校验并优先解析<head>中的<script type="application/ld+json">,而Microdata在移动端和垂直搜索中因DOM依赖性强、容错性差而大概率失效。

JSON-LD 是当前唯一能稳定触发富展现(如菜谱、活动、本地商家卡片)的格式,Microdata 在移动端和垂直搜索中大概率失效。
Google 和 Bing 对两种格式的实际解析差异
Googlebot-Mobile 优先扫描 <head> 中的 <script type="application/ld+json">,几乎不深入解析 Microdata 的 DOM 嵌套层级;Bing 同样只对 JSON-LD 做完整字段校验。Microdata 一旦漏写 itemscope、itemprop 写在 <span> 外、或父级 <div> 被 CSS 隐藏,对应字段直接丢弃——而 JSON-LD 即使放在 <body> 底部,只要 HTML 源码里存在,就能被识别。
JSON-LD 动态注入是否可行
不可靠。用 JS 执行 document.createElement("script") 插入 JSON-LD,Google 抓取时通常跳过执行,导致结构化数据丢失。必须确保最终返回给爬虫的 HTML 源码中已包含该 <script> 标签——服务端渲染(SSR)或静态生成(如 Next.js 的 getStaticProps)是安全做法。
- 允许:服务端吐出带 JSON-LD 的 HTML
- 禁止:前端 JS 运行时拼字符串再 append 到
<head> - 边缘情况:SPA 使用 prerender 工具(如
PrerenderSPAPlugin)可绕过限制,但需验证输出源码
Microdata 是否还有适用场景
仅剩两个低风险用途:辅助语义化(如给价格加 itemprop="price" 供屏幕阅读器理解),或与 JSON-LD 混用时做冗余备份(但必须保证两者字段一致,否则 Google Rich Results Test 会报冲突)。所有需要触发富摘要的场景(Recipe、Event、LocalBusiness 等),Microdata 一律不能替代 JSON-LD。
立即学习“前端免费学习笔记(深入)”;
- 不要为“兼容旧系统”保留 Microdata —— 没有主流搜索引擎靠它生成富结果
- 不要在 JSON-LD 里引用
window.location.href或其他运行时变量 —— 爬虫不执行 JS,值为空或报错 - 类型名必须严格匹配 schema.org 官方定义,比如产品页写
"@type": "Product",写成"@type": "Item"就不会触发商品卡片
真正容易被忽略的是嵌入时机:JSON-LD 必须出现在 HTML 源码中,且最好在 <head> 末尾而非 <body> 开头——部分爬虫对 <body> 内脚本的抓取优先级会降低。



















