这类问题我又碰上了一次。sitemap 由 CDN 边缘动态生成,节点时钟比源站快八分钟,lastmod 写出来的时间比蜘蛛本地时间还新,Search Console 提示日期无效,整份文件被跳过。

第一反应是「源站与边缘的时钟差超过允许的容错范围」,验证下来不成立。

原因不止一个,得分开看。边缘函数用节点本地时间生成 lastmod,节点 NTP 没有同步;时区处理把 UTC 当成本地时间再加了一次偏移;缓存里存着上一次生成的超前时间。

上来先对比源站与边缘返回的 Date 头

curl -sI https://www.example.com/sitemap.xml | findstr /i "date last-modified"

直接看源站文件里的 lastmod

curl -s -H "Host: www.example.com" http://203.0.113.10/sitemap.xml | findstr /i lastmod

随后改用源站时间生成并统一 UTC

date -u +%Y-%m-%dT%H:%M:%S+00:00

刷新边缘缓存后复验

curl -s https://www.example.com/sitemap.xml | findstr /i lastmod

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

怎么算真的好了,看的是同一批现象。改用源站 UTC 时间后,lastmod 不再超前,文件恢复正常读取,新条目当天被抓。

时间字段统一用 UTC 生成,边缘节点的时钟不可信,动态生成 sitemap 尤其要注意。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189