很多站点把 sitemap 当成一份报备清单,只要 URL 在里面就算尽到义务。实际上它承担两件事:让搜索引擎更快发现新 URL,以及给已知 URL 提供一条重抓的参考线索。而 lastmod 是这条线索里最容易被写坏的部分。
lastmod 影响的是什么
先说清边界:lastmod 不决定收录,也不能让页面进索引。它只是抓取调度时的一个输入项,用来判断这个 URL 值不值得再来看一眼。写对了,页面更新后有机会更快被重新抓取;写错了,顶多是这个信号失效,不会直接把页面踢出索引。
同样常被提到的 changefreq 和 priority,主流搜索引擎早已公开表示基本不参考,不必花时间微调。
几种典型的信号失真
- 全站统一写当天时间。程序每次生成 sitemap 就把所有 URL 的 lastmod 刷成当前时间。爬虫抓回来发现内容没变,几次之后这个字段就没什么信用了。
- 发布代码就更新,内容没动也改。批量改模板、调样式都会让时间戳集体前移,看起来像全站改版。
- 内容真改了却不更新。反向的问题:改动没有反映到 lastmod,页面长期排队等不到重抓。
- 格式不规范。缺少时区、用本地时间冒充 UTC、写成 2024/05/01 这类非标准格式,解析失败后字段等于没写。
怎么写才算不白填
- 只在该 URL 的正文或关键区块真正变化时更新,样式、导航、页脚调整不算。
- 使用 W3C Datetime 格式并带上时区,例如 2024-05-01T10:20:30+08:00。
- 保持语义上的单调递增:不要为了催爬虫反复把时间往前调,短期可能有波动,长期只会削弱可信度。
- 不同页面的更新时间要能和真实的编辑记录对上,方便自己排查。
把 lastmod 当成日志,而不是武器:它是内容变更的如实记录,不是催促抓取的手段。
分片与提交的几个细节
sitemap 单个文件通常不超过 5 万条 URL、50MB(未压缩),超了就拆片,并用索引文件把分片串起来。这里有两个容易忽略的点:
- 不要每次全量重写所有分片,尽量只更新发生变化的那一片。
- sitemap 地址在 robots.txt 里声明,同时在搜索资源平台手动提交,两条路径都保留问题不大。
怎么判断有没有用
回看服务器日志里这些 URL 的抓取时间分布,对比更新前后的间隔。如果更新后仍长时间没有重抓,先检查是不是被抓取预算、内链深度、页面质量这些更靠前的因素卡住了——lastmod 只是排在后面的优化项。
另外要避免一种误读:抓取频率上升不等于收录变多。抓取是过程,收录是另一套判断,两者之间隔着页面质量评估。把日志里的抓取曲线当成收录曲线,很容易得出错误结论。
小结
sitemap 的价值一半在“有哪些 URL”,一半在“最近变了什么”。把 lastmod 写准,比在 changefreq 上反复试验更有意义。