2011-10-19 257 views
4

我一直的想法,做一个HEAD请求,而不是一个GET要求的是速度更快(无论资源的大小),并因此不得不在某些解决方案,它的优势。然而,在使用Python进行HEAD请求(对于一个5 MB以上的动态生成的资源)时,我意识到需要花费与请求GET(差不多27秒而不是'不到2秒')的请求希望)。HEAD请求对GET请求

使用的一些urllib2的解决方案,使这里找到一个HEAD要求,甚至使用pycurl(设置headersnobodyTrue)。他们两人都在同一时间。

我在概念上错过了什么吗?是否有可能使用Python来做一个'快速'HEAD请求?

+0

作为以下注释的补充,一些服务器* do *对HEAD请求的响应速度更快。 –

回答

7

服务器正在大量的时间,而不是你的请求或网络。如果它是一个动态资源,那么很可能服务器在构建它之前并不知道所有的头信息,特别是Content-Length。所以无论你做HEAD还是GET,它都必须构建整个事物。

+0

这是有道理的,谢谢。 – Ben

1

的响应时间是由服务器主导,而不是由你的要求。 HEAD请求返回的数据较少(只是头部),因此概念上它应该更快,但实际上,许多静态资源被缓存,因此几乎没有可测量的差异(只是额外数据包下线的时间)。

1

机会是,那请求时间的大部分实际上是任何方法产生的服务器,而不是将其传送到您的时间上的5 + MB响应。

在许多情况下,响应一个HEAD请求时,Web应用程序将仍然执行完整的脚本 - 它只是将不会发送全身返回给请求者。

如果你有机会到正在处理该请求的代码,你可以在那里添加一个条件,使其处理不同,具体取决于该方法,这可能会加速它的显着的请求。