lastmod 说的是什么
sitemap 里的 lastmod 是给蜘蛛的一個提示:這個 URL 的内容上一次發生實质性變化是什么时候。它不是發布時間,也不是服務器上文件的修改時間,更不是你希望蜘蛛来抓的時間。填它的唯一目的,是让蜘蛛在比較新舊頁面时,優先把時間花在真正變過的地址上。
几種很常见的乱填方式
- 全站统一填成同一個時間戳,所有 URL 一模一样。
- 頁面每次被訪問时動態生成目前時間,等于永遠都是“刚更新”。
- 每次發布站点、跑一次构建脚本,就顺手把所有 URL 的時間刷成当天。
- 只改了模板、广告位或推荐位,正文没動,也更新 lastmod。
- 時間格式寫得五花八门,时区也没标清楚。
時間戳失真之後會發生什么
蜘蛛對 sitemap 的信任是逐步建立的。当你反复声明“全站刚更新”,但抓回来發現内容和上次几乎一样时,這個提示的價值就會打折。结果通常是两種:一是蜘蛛干脆忽略 lastmod,按自己的节奏重抓;二是按你给的错誤時間分配抓取,把预算花在没有實质變化的頁面上,真正改過的頁面反而排到後面。
lastmod 不是催抓工具,它是一個可信度信号。失真一次影响不大,長期失真等于自動放弃這個信号。
哪些改動才算實质性更新
判断标准可以很朴素:如果用戶重新訪問這個頁面,看到的内容和上一次有区別,那就算更新。
- 正文新增、删减、改寫,标题或描述性文案調整。
- 商品價格、库存狀態、活動時間等關键字段變化。
- 结构化資料里的核心信息變化。
- 頁面主体结构被替換,而不是在頁面上加了一段推荐。
反之,頁脚的备案信息、頁头導航、侧栏推荐位的轮換,通常不值得更新所有頁面的 lastmod。评论如果确實是頁面主体内容的一部分,可以單獨考虑。
它和其他時間信号要對得上
lastmod 不是孤立存在的。服務器返回的 Last-Modified 响應头、頁面上寫给用戶看的更新時間、结构化資料里的 dateModified,這几個地方如果互相矛盾,蜘蛛只能選擇不信。做法上尽量让它們指向同一個真實時間,而不是各自维護一套。
另外,lastmod 不要填未来時間,也不要早于该 URL 被建立的時間。有些站点為了“排前面”把時間往後寫,實际效果往往是反向的。
一個可执行的填法
- 由内容侧自動产出時間:内容真正儲存並生效的时刻,而不是构建、部署或訪問的时刻。
- 使用统一的 ISO 8601 格式,並带上时区,例如 2024-05-01T09:30:00+08:00。
- 新頁面首次提交时带 lastmod,之後只在實质更新时改。
- 批量模板類頁面可以统一兜底,但不要覆盖單頁的真實時間。
- 定期抽查:從 sitemap 里随机抽一批 URL,和頁面實际内容對比,看時間是否對得上。
排查顺序
如果你怀疑 lastmod 有問题,可以按這個顺序看:先確認是否所有 URL 共享同一個時間戳;再看是否由服務器動態生成;然後對比日誌里蜘蛛對這些 URL 的抓取频率,是不是明顯偏向某些不该频繁重抓的頁面;最後检查响應头與頁面上的時間是否一致。多數問题在第一步就能看出来。
把 lastmod 填准,不會直接带来收錄,但它能让你的更新信号保持干净。蜘蛛愿意相信你给的時間,後面很多事情才有讨论的基础。