你的网站上了Serverless,百度蜘蛛还找得到路吗?

刚切到 Serverless,晚上刷百度搜自己网站,首页没出来——你心里“咯噔”一下:是不是蜘蛛压根没抓到?

别慌。这不是架构背叛了SEO,而是你和百度蜘蛛之间,少了一次靠谱的“第一次见面”。

Serverless架构到底动了SEO的哪块蛋糕?

Serverless 的本质是“有请求才干活”。比如用户点开一个商品页,函数才启动、读数据库、拼 HTML、返回结果;等几秒没人再访问,这个“工作台”就收摊了。

百度蜘蛛也这么“点单”。但它不等人。它要的是:连得上、回得快、内容稳。

问题就出在这三点上:

  • 冷启动慢 → 蜘蛛等不及,直接放弃;
  • 函数重启后状态丢了 → 同一个链接,这次有内容,下次变空白;
  • 路由配置随手写 → /product?id=123/product/123 都能打开,但百度当两个页面抓,最后全算404。

有个做家居配件的团队,把老站迁到云函数后没处理商品页的预渲染。结果百度来抓深层链接时,经常卡在加载态,或返回空 <div id="root"></div>。几周后,搜索资源平台里“抓取异常”里全是超时记录,索引量肉眼可见地往下掉。

百度蜘蛛如何与Serverless站点交互?

它不认“Serverless”这三个字,只认三件事:

  • HTTP 200 回来了吗?
  • 响应时间有没有超过 5 秒?
  • 返回的 HTML 里,<title>、正文段落、<h1> 这些关键信息,是不是已经写在源码里了,而不是靠 JS 拼出来的?

冷启动不是原罪,超时才是。蜘蛛不会因为你用的是函数就多等两秒。它只按自己的节奏来:一次失败,下次少来;连续失败,干脆暂停。

所以别问“百度支不支持 Serverless”,要问:“我的函数,能不能在蜘蛛眨眼的功夫里,把该给的东西都交出去?”

让Serverless站点对百度友好的3个核心方法

方法一:别让蜘蛛撞上“刚开机”的函数
重点页面(比如首页、分类页、爆款商品页)别让它每次都要“重新开机”。

  • 云厂商后台里找“预置并发”或“保留实例”,哪怕只留 1 个,也能扛住蜘蛛第一波请求;
  • 更省心的办法:博客、帮助文档、产品介绍这类更新慢的内容,直接用构建工具(如 Vercel、腾讯云托管)生成静态 HTML,扔进对象存储(COS/S3),走 CDN 返回——零冷启动,蜘蛛秒开。

方法二:同一个 URL,永远说同一句话
别让 /article/abc 这个地址今天返回文章,明天跳转到登录页,后天又 404。

  • 所有内容存数据库或对象存储,别塞在函数内存里;
  • 路由逻辑写死:/product/:id 就必须对应一个真实商品,查不到就返回 404,别自动重定向或兜底到首页。

方法三:HTML 必须“出生即完整”
百度现在能跑 JS,但跑得慢、不稳定。最保险的做法,是让函数返回的 HTML 源码里,标题、正文、图片 alt、结构化数据(<script type="application/ld+json">)全都在那儿。

  • 用 Next.js 就开 SSR 或 SSG;
  • 用 Vue/Nuxt 就配好 ssr: true
  • 自己写的函数?手动拼 HTML 时,把 fetch 到的内容直接塞进 <body> 里,别留个空容器等前端补。

必须绕开的Serverless SEO“天坑”

天坑一:robots.txtsitemap.xml 别藏在函数后面
它们必须是蜘蛛一敲地址就拿到的纯静态文件。

  • 把这两个文件和你的 CSS、JS 一起放进 COS/S3 的根目录;
  • 确保 https://your.com/robots.txt 能直接打开,不要指向 https://your.com/api/robots 这种需要函数处理的路径。

天坑二:URL 别越写越多,最后自己都认不全
函数路由灵活,容易写出 /list?sort=price&tag=sofa&page=1 这种带一堆参数的链接。百度会当成不同页面反复抓,浪费配额还可能判重复。

  • 在函数入口统一做参数清洗,无关参数(如 utm_sourcesession_id)直接忽略;
  • 所有列表页加 <link rel="canonical" href="https://your.com/list?tag=sofa">
  • robots.txt 里加上 Disallow: /*?*utm_* 这类规则,拦住追踪参数。

天坑三:不看日志,等于闭眼开车
Serverless 日志默认是散的。你得主动把它收拢:

  • 在云函数控制台,把日志投递到 CLS(腾讯云)或 SLS(阿里云)这类日志服务;
  • 设置筛选条件:User-Agent contains "Baiduspider",重点关注 status >= 500duration > 5000 的请求;
  • 一旦发现蜘蛛频繁收到 502 或超时,就是函数该瘦身或加预热的时候了。

真实世界里的Serverless SEO效果追踪

换架构后,别光盯着百度统计的“流量”,先去 百度搜索资源平台(原站长平台)看三样东西:

  • “抓取频次”曲线是不是平滑没断崖;
  • “抓取异常”列表里有没有扎堆的“连接超时”“响应超时”;
  • “索引量”趋势线有没有跟着内容发布节奏慢慢爬升。

有位独立开发者,把技术博客从 ECS 迁到 Vercel。他没搞复杂配置,就两步:

  1. Next.js 项目里所有文章页设为 getStaticProps,构建时全部生成静态 HTML;
  2. sitemap.xml 放在 public/ 目录下,自动被 CDN 托管。
    上线后第三天,他在搜索资源平台提交了新站点地图,当天就看到抓取频次翻倍,索引速度比以前快了不少——因为蜘蛛打开的每个链接,都是现成的 HTML,不用等、不用猜、不踩坑。

今天下班前就能做的1个关键检查

打开 百度搜索资源平台 → 左侧菜单点「抓取诊断」→ 输入你网站上 3 个最关键的动态页面地址(比如 /product/xxx/article/yyy)。

重点看三处:
✅ 返回状态码是不是 200
✅ 页面预览里,有没有你文章标题、第一段正文、主要图片的 alt 文字;
✅ 响应时间有没有标红(>5s);

如果预览里只看到 <div id="app"></div> 或一片空白,说明百度蜘蛛看到的,和你自己浏览器里 F12 看到的,根本不是一回事——优化就从这里开始:关掉 JS 渲染,先让函数吐出完整的 HTML。