【发布时间】:2011-03-04 11:45:35
【问题描述】:
我想知道如何发出 HTTP 状态代码,这将导致爬虫稍后尝试该内容,因为系统当前正在高负载下运行。
304 状态和无内容显示是否可以解决此问题?
【问题讨论】:
标签: php apache http web-crawler
我想知道如何发出 HTTP 状态代码,这将导致爬虫稍后尝试该内容,因为系统当前正在高负载下运行。
304 状态和无内容显示是否可以解决此问题?
【问题讨论】:
标签: php apache http web-crawler
您应该发出带有Retry-Later 选项集的503(服务不可用)。这似乎是一个准确的解决方案。
请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 和 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
【讨论】:
304HTTP Status 代码表示Not Modified。
如果您的内容自上次爬虫到达其页面后没有被修改(假设爬虫发送一个 HTTP 标头以指示它何时到达),我想可以发送一个304 HTTP 状态——事实上,这是正确的做法。
但是如果出现以下情况,您可能不应该发送Not Modified 状态代码:
相反,如果您的网络服务器超载,正确的 HTTP 状态代码将是 503 Service Unavailable (quoting):
服务器当前不可用 (因为它超载或停机 维护)。
一般来说,这是一个 临时状态。
【讨论】:
好吧,如果您用304 回答无条件请求,客户可能会将您的回答归类为“一般错误”(如 500)。为什么不发送针对这种情况的状态码503 Service Unavailable?。
【讨论】: