跳至主要內容

    Crawl-delay

    Crawl-delay 是 robots.txt 中用來控制爬蟲抓取頻率的指令。了解哪些搜尋引擎支援 crawl-delay、如何正確設定、以及 Google 不支援時的替代方案。

    定義

    Crawl-delay 是 robots.txt 中的一個非標準指令,用來建議搜尋引擎爬蟲在連續請求之間等待指定的秒數,以降低對伺服器的負載。語法為「Crawl-delay: N」,其中 N 是秒數。重要須知:Googlebot 完全不支援此指令!Bing、Yandex、Yahoo(部分)等爬蟲支援。對於 Google,你需要使用 Search Console 的抓取速率設定,或透過改善伺服器效能讓 Google 自動調整。使用 crawl-delay 時要謹慎,過長的延遲可能嚴重影響網站的索引速度。

    為什麼重要

    • 降低非 Google 爬蟲(Bing、Yandex)對伺服器的抓取壓力
    • 保護小型或共享主機伺服器免於爬蟲流量過載
    • 在伺服器資源有限時,確保真實使用者體驗優先
    • 防止激進的爬蟲消耗過多頻寬和 CPU 資源
    • 為資料庫密集型頁面提供緩衝時間
    • 在流量高峰期暫時減緩爬蟲抓取
    • 配合 WAF/Rate Limiting 建立完整的爬蟲管理策略

    怎麼做(實作重點)

    • 先確認目標爬蟲是否支援:Googlebot 不支援、Bingbot 支援、Yandex 支援
    • 在 robots.txt 中針對特定 User-agent 設定:User-agent: Bingbot \n Crawl-delay: 10
    • 數值建議:1-10 秒較合理,超過 30 秒可能嚴重影響索引
    • 對 Google:改用 Search Console > 設定 > 抓取速率,或升級伺服器
    • 監控伺服器日誌觀察爬蟲行為是否改變
    • 配合快取策略(CDN、頁面快取)減少伺服器負載
    • 不要對所有 User-agent 設定 crawl-delay,只針對有問題的爬蟲

    範例

    text
    # robots.txt 範例:針對不同爬蟲設定不同延遲
    
    # Googlebot 不支援 crawl-delay,不需要設定
    User-agent: Googlebot
    Allow: /
    
    # Bingbot 支援 crawl-delay
    User-agent: Bingbot
    Crawl-delay: 5
    Allow: /
    
    # Yandex 支援 crawl-delay
    User-agent: Yandex
    Crawl-delay: 10
    Allow: /
    
    # 其他爬蟲的預設設定
    User-agent: *
    Crawl-delay: 2
    Allow: /
    
    Sitemap: https://example.com/sitemap.xml
    text
    # 錯誤示範:不要這樣做!
    
    # ❌ 錯誤 1:對 Googlebot 設定(無效)
    User-agent: Googlebot
    Crawl-delay: 30
    
    # ❌ 錯誤 2:延遲過長(嚴重影響索引)
    User-agent: *
    Crawl-delay: 60
    
    # ❌ 錯誤 3:用 crawl-delay 取代正確的 Disallow
    # 如果某路徑不想被抓,應該用 Disallow 而非延遲

    相關連結

    常見問題

    關於這個詞彙的常見問答。

    回到詞彙表