我始终认为执行HEAD
请求而不是GET
请求更快(无论资源的大小),因此在某些解决方案中具有优势。
然而,在Python中发出HEAD
请求时(对于5+ MB动态生成的资源)我意识到它需要花费相同的时间来发出GET
请求(差不多27秒而不是'不到2秒'我希望能够。)
使用一些urllib2解决方案在此处发现HEAD
请求,甚至使用pycurl
(将headers
和nobody
设置为True
)。他们俩都花了相同的时间。
我是否在概念上遗漏了什么?是否可以使用Python来执行“快速”HEAD
请求?
答案 0 :(得分:7)
服务器占用大部分时间,而不是您的请求者或网络。如果它是一个动态资源,服务器可能不知道所有头信息 - 特别是Content-Length - 直到它构建它。因此无论你是做HEAD还是GET,它都必须构建整个事物。
答案 1 :(得分:1)
响应时间由服务器控制,而不是由您的请求决定。 HEAD请求返回的数据较少(只是标题),所以在概念上它应该更快,但实际上,许多静态资源都被缓存,因此几乎没有可测量的差异(只是附加数据包下线的时间)。 / p>
答案 2 :(得分:1)
很可能,请求时间的大部分时间实际上是任何进程在服务器上生成5 + MB响应而不是将其传输给您的时间。
在许多情况下,Web应用程序在响应HEAD请求时仍会执行完整脚本 - 它不会将完整的主体发送回请求者。
如果您有权访问处理该请求的代码,您可以在其中添加条件,以使其根据方法的不同处理请求,这可以大大加快它的速度。