标签页按七日热度排序,同一地址每周内容顺序都不一样,蜘蛛几乎每天都来重抓,但页面里只有标题列表,重抓之后索引里的摘要还是旧的。

一开始怀疑是「标签页之间互相推荐,形成高频更新假象」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。热度排序让 lastmod 每周变化,蜘蛛判定为频繁更新。少数情况下是页面没有稳定内容,摘要抽取不到可用段落。

少数情况下是缓存时间设得很短,回源压力被放大。

先对比同一标签两次抓取的正文差异

curl -s 'https://www.example.com/tag/nginx' > a.html; sleep 60; curl -s 'https://www.example.com/tag/nginx' > b.html; diff <(sed 's/[0-9]//g' a.html) <(sed 's/[0-9]//g' b.html) | head

给标签页加一段固定的标签说明

echo '<p>本标签收录与 nginx 配置相关的全部文章。</p>'

接着排序改成按发布时间倒序

add_filter('pre_get_posts', function($q){ if ($q->is_tag()) { $q->set('orderby', 'date'); } });

末了把标签页缓存延长到一天

proxy_cache_valid 200 1d;

恢复的判定其实很直接。标签页连续两次抓取正文一致,lastmod 只在有新文章时变化,抓取频率回落到每周一次左右。

容易忽略的是,排序和分页一样属于内容排列,地址不变内容常变会被当成高频更新页,最后既费预算又没有收录收益。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189