报错是这么冒出来的。Bing Webmaster 的抓取统计里平均响应延迟 12 小时,新文章三天才收录,站点每天更新 80 篇,IndexNow 提交返回 429,后台没有任何报错。
中间走过弯路,把「sitemap 里 lastmod 长期不变,Bing 降低了回访频率」当成主因,改完现象没变。
真正麻烦的地方在于,几个原因的现象几乎一样。IndexNow 单日提交量超过配额,后续请求被静默丢弃。另一种情况是站点响应时间在 Bing 侧测到 3 秒以上,抓取被排到低优先级。
不容易想到的是,服务器对 Bingbot 的 keepalive 连接提前关闭。
第一件事是看 IndexNow 的实际返回码
curl -s -o /dev/null -w '%{http_code}\n' 'https://api.indexnow.org/indexnow?url=https://www.example.com/a/1&key=$KEY'
随后核对最近的提交条数
grep -c 'indexnow' /var/log/nginx/access.log
接着把批量提交拆小并压低频率
curl -X POST https://api.indexnow.org/indexnow -H 'Content-Type: application/json' -d '{"host":"www.example.com","key":"$KEY","urlList":[]}'
量 Bingbot 看到的响应时间
curl -s -o /dev/null -w '%{time_total}\n' -A 'bingbot' https://www.example.com/a/1
恢复的判定其实很直接。IndexNow 返回 200 或 202,Bing 后台的平均响应时间降到 1 秒内,新文章收录间隔缩短到一天。
补一句。Bing 的抓取延迟统计的是它自己的排队时间,不全是服务器慢,配额和响应速度要分开看。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
