在高系统负载下,可以安全返回什么状态代码

时间:2011-03-04 11:45:36

标签: php apache http web-crawler

我想知道如何发布HTTP状态代码,这会导致抓取工具稍后尝试该内容,因为系统当前正在高负载运行。

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

3 个答案:

答案 0 :(得分:4)

您应该设置503(服务不可用)并设置Retry-Later选项。这似乎是一个准确的解决方案。

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

答案 1 :(得分:1)

304 HTTP Status代码表示Not Modified

如果自上次抓取工具到达其网页(假设抓取工具发送HTTP标头以指示其何时到来)以来您的内容未被修改,我认为发送一个内容是可以的304 HTTP状态 - 实际上,这是正确的做法。


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

  • 您无法确定抓取工具最后一次来的时间 - 因此,您无法确定您的内容的哪个版本最后被编入索引
  • 您的内容已被修改


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

  

服务器目前无法使用   (因为它过载或下载了   保养)。
一般来说,这是一个   临时状态。

答案 2 :(得分:0)

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