新京报
建议做法如下: 统一SSR网关 :部署一个独立的服务端渲染中间层(如Node
当User-Age🎉nt命中百度爬虫标识时,网关不返回普通的微前🔥端壳页面,而是依次请求每个子应用的SSR端点,拼接完成HTML后返回给爬虫
避免子应用之间互相💪阻塞渲染,使用微前端框架(如qiankun、Module Federation)时开启sandbox独立沙箱,确保爬虫抓取时不因样式冲突🎵或JS异常而导致白屏
这种拆分在用户体验上实现了无缝切换,但传统爬虫通常只执行一次HTML请求,不执行JavaScript或仅执行有限JS,导致以下典型问题: 子应用内容无法被原生渲染 :主应用容器可能仅包含JavaScript加载逻辑,无法在静态HTML中直接输出子应用的元信息(title、description、keywords)和主体文字
针对上述挑战,需要从构建、服务端渲🎨染和🎵子应用间通信三个层面进行适配
h1标签的层次继承 :在主应用容器中保留一个固定id的h1容器,子应用在渲染时优先输出其自身的核心标题;如果该子页面属于某个大分类,需要在h1后追加一个可选的副标题(如 <h1>某某产品详情 - xxx品牌</h1> )
js网关),负责接收百度爬虫的HTTP请求
微前端各子应用必须约定统一的元信息管理协议: 全局document
六、持续监控与结构验证 使用百度搜索资源平台的“抓取诊断”工具 :验证爬虫返回的HTML中是否包❤️含每个子页面的实际文字内容,而非仅JavaScript脚本
动态加载的资源链接无法被索引 :图片、视频等资源🔑若通过子应用的JavaScript动态插入,爬虫无法识别其URL,影响图片搜索和页面相关性计算
客户端再对此HTML进行水合,不会改变爬虫已经读取的内容结构
建议母应用输出统一的JSON-LD面包屑,子应用只需提供当前节点信息即可
以下实践指南总结了在采用微前端架构时,如何确🚀保百度搜索引擎能够有效收录,并维持稳定的搜索排名