【问题标题】:On high system load, what status code is safe to return在高系统负载下,什么状态码可以安全返回
【发布时间】:2011-03-04 11:45:35
【问题描述】:

我想知道如何发出 HTTP 状态代码,这将导致爬虫稍后尝试该内容,因为系统当前正在高负载下运行。

304 状态和无内容显示是否可以解决此问题?

【问题讨论】:

    标签: php apache http web-crawler


    【解决方案1】:

    您应该发出带有Retry-Later 选项集的503(服务不可用)。这似乎是一个准确的解决方案。

    请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

    【讨论】:

      【解决方案2】:

      304HTTP Status 代码表示Not Modified

      如果您的内容自上次爬虫到达其页面后没有被修改(假设爬虫发送一个 HTTP 标头以指示它何时到达),我想可以发送一个304 HTTP 状态——事实上,这是正确的做法。


      但是如果出现以下情况,您可能不应该发送Not Modified 状态代码:

      • 您无法确定爬虫最后一次出现的时间 - 因此,您无法确定您的内容的哪个版本最后被索引
      • 您的内容已被修改


      相反,如果您的网络服务器超载,正确的 HTTP 状态代码将是 503 Service Unavailable (quoting)

      服务器当前不可用 (因为它超载或停机 维护)。
      一般来说,这是一个 临时状态。

      【讨论】:

        【解决方案3】:

        好吧,如果您用304 回答无条件请求,客户可能会将您的回答归类为“一般错误”(如 500)。为什么不发送针对这种情况的状态码503 Service Unavailable?。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 2023-03-31
          • 2011-01-01
          • 2011-07-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多