之前的博客是纯客户端渲染的 SPA。上线三个月,百度收录率大概 3%。
问题不在"百度不执行 JS"
用 Baiduspider 的 UA 直接抓一次就明白了——返回的是一个 3KB 的空壳:
curl -s -A "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/spider.html)" \
https://example.com/ | wc -c
# 3029
百度确实执行 JS,但它有一个"渲染配额",只够覆盖极少数页面。
改成预渲染之后
nuxt generate 把每个页面在构建时渲染成静态 HTML,爬虫拿到的是完整正文:
- 首页从 3KB 空壳变成 20KB 完整 HTML
- 首屏传输量从 441KB 降到 89KB(开了 gzip 之后)
- 不追求"买快速收录",那类服务早就下线了
代价
改一篇文章要重新构建。但构建只要几秒,而且发布脚本已经做成一条命令,不是问题。
