文章页的 HTML 里只有一个空 div,正文要等接口返回才挂上去,抓取工具的渲染截图是一片空白,索引里只有标题。乍看像缓存或者权限的锅,追下去往往不是。

curl -s https://example.com/post/123 | grep -c "文章正文第一段"
# 返回 0 说明内容不在初始 HTML 里
curl -s https://example.com/post/123 | wc -c

追下去是这么回事:前端接管了整个渲染流程,服务端只吐一个挂载点。抓取工具虽然会执行 JS,但排队和超时都有限,接口慢一点就只拿到空壳。

「JS 渲染内容不收录」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。

具体做法是,关键正文改成服务端直出,至少首屏要有内容;用 curl 看源码里能不能读到正文;不能直出时加预渲染,给抓取工具返回静态页;改完对比抓取工具的渲染结果。

验收就看一点,不执行 JS 也能在源码里读到正文,抓取工具的截图有完整段落。

作者 9823189