这类问题我又碰上了一次。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 尤其要注意。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
