先看现象。主题每次保存文章都更新 lastmod,连改标点都算一次修改,sitemap 里两万条 URL 的时间戳天天在变,蜘蛛对更新信号的信任度越来越低。
真正麻烦的地方在于,几个原因的现象几乎一样。保存动作触发修改时间,不区分实质更新。还有一种是批量任务每晚重写一遍全量 sitemap。
还有一种情况,没有区分内容更新和格式修改。
上来先看最近修改时间的分布
curl -s https://www.example.com/sitemap.xml | grep -o '<lastmod>[^<]*' | sort | uniq -c | tail
再往下确认更新记录里的真实改动
wp post list --post_status=publish --fields=ID,post_modified --posts_per_page=10
定位写入时间戳的位置
grep -rn 'post_modified' themes/ --include=*.php | head
当时还开着另一个排查窗口,两边日志对照着看才定位到。
同一份数据我导出了两份,一份留底,一份拿来试。
恢复的判定其实很直接。时间戳稳定后,新页面的抓取间隔从七天缩短到两天,蜘蛛对更新信号的反应变快。
lastmod 是承诺不是装饰,频繁无意义跳动会让整份 sitemap 被降权处理。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
