很多人在做蜘蛛池时,會把注意力放在入口頁的連結、内容和跳轉上,却容易忽略 HTTP 响應头里的缓存字段。Last-Modified、ETag、Cache-Control 這些字段不直接决定收錄,但它們會影响蜘蛛多久来一次、是否認為頁面有變化。理解它們的机制,能减少無效抓取。
缓存头為什么會影响蜘蛛抓取
蜘蛛抓取頁面时,會记錄响應头信息。如果服務器返回 304 Not Modified,蜘蛛知道内容没變,可能不會重新解析。對于蜘蛛池入口頁来说,如果長期返回 304,蜘蛛的訪問频率可能下降;但如果每次都返回 200 且内容不變,又可能被判断為低质重复。關键是要让“變化”和“更新”真實對應。
Last-Modified 怎么设
Last-Modified 表示頁面最後修改時間。設定时要注意:不要每次請求都返回目前時間,這會让蜘蛛誤以為頁面一直在變,導致频繁抓取,浪費抓取预算。也不要把時間固定成很久以前,否則蜘蛛可能降低訪問频率。建议在入口頁内容确實調整时,才更新這個時間。
- 動態生成目前時間:每次抓取都顯示刚修改,蜘蛛會反复来。
- 時間格式错誤:必须用 GMT 格式,如 Wed, 21 Oct 2024 07:28:00 GMT。
- 與内容不一致:内容没變但時間變了,短期可能引来蜘蛛,長期會降低信任。
ETag 的作用與注意点
ETag 是文件或頁面的唯一标识,通常由服務器根據内容生成。蜘蛛再次抓取时,會带上 If-None-Match,服務器對比後决定返回 200 還是 304。對于蜘蛛池入口頁,如果使用 ETag,要确保它是基于内容計算的,而不是每次都變。否則蜘蛛會一直收到 200,但内容又没變。
ETag 和 Last-Modified 同时存在时
两者同时存在时,蜘蛛會優先參考 ETag。如果 ETag 不稳定,Last-Modified 的作用會被削弱。建议至少保持其中一個稳定可靠。
304 响應是好事還是坏事
304 本身不是坏事,它表示“内容没變”,能节省带宽和抓取资源。但對于蜘蛛池入口頁,如果長期没有實质更新,蜘蛛来几次都收到 304,可能會减少回訪。更合理的做法是:入口頁保持低频但真實的更新,並在更新後让缓存标识同步變化。
不要把 304 当成“留住蜘蛛”的手段,它只是告诉蜘蛛這次不用重新下载。
入口頁缓存策略建议
- 内容确實變化时,再更新 Last-Modified 和 ETag。
- 不要每次請求都生成新的 ETag 或 Last-Modified。
- 對于需要频繁吸引蜘蛛的入口頁,可以關閉强缓存,但不要伪造修改時間。
- 用服務器日誌观察 304 和 200 的比例,判断蜘蛛是否還在正常抓取。
- 如果入口頁長期不更新,考虑补充新連結或調整頁面结构,而不是改缓存头。
常见誤区
- 誤区一:把 Last-Modified 改成目前時間就能让蜘蛛常来。短期可能有效,長期會降低信任。
- 誤区二:ETag 越复杂越好。實际上不稳定反而干扰判断。
- 誤区三:304 越多越好。對于蜘蛛池入口頁,過多 304 可能意味着更新停滞。
- 誤区四:缓存头和 SEO 無關。它影响抓取频率和资源分配,間接影响發現效率。
结语
缓存头是蜘蛛池入口頁的基础配置之一。它不會直接带来收錄,但能帮助蜘蛛更合理地安排抓取。把更新、缓存标识和日誌观察结合起来,比單纯修改某個字段更有意义。