HEAD响应比GET快吗?

时间:2011-08-20 16:08:40

标签: http-get httpverbs http-head

我目前正在使用GET获取有关文件的信息,如果我使用HEAD请求重写它会更快吗?原因我在第一次响应后关闭连接。

5 个答案:

答案 0 :(得分:12)

HEAD响应只包含HTTP标头但没有正文 - 如果您不使用正常在GET响应中传输的正文中的任何信息,通常使用HEAD通常会更快 - 如果没有正文从它开始不应该有所作为。

同样来自here

  

HEAD方法与GET相同,只是服务器不能   在响应中返回消息正文。包含元信息   在HTTP头中响应HEAD请求应该是相同的   响应GET请求发送的信息。这种方法可以   用于获取有关该隐含的实体的元信息   请求而不转移实体主体本身。这个方法是   经常用于测试超文本链接的有效性,可访问性,   和最近的修改。

答案 1 :(得分:2)

HEAD是否快于GET完全取决于服务器端的实施(通常是由于数据传输较少)...如果HEAD提供的信息是在你的情况下,我会选择HEAD并且只回退到GET,其中HEAD没有正确实施和/或某些不起眼的代理正在弄乱它......

答案 2 :(得分:2)

您尚未提供有关您正在访问的服务器类型或您正在访问的网络的任何信息。

HEAD请求完成得比GET更快,这确实是合理的,因为它涉及较少的数据传输。但是,在快速或高延迟连接上,这几乎总是无关紧要。至于服务器方面,它在很大程度上取决于你正在做什么,但在大多数情况下,如果你计时,它将没有可衡量的差异。

如果您不需要响应的正文,为什么不使用HEAD呢?无论您是否可以测量响应时间的任何差异,或者您不能,它的带宽效率更高。

答案 3 :(得分:2)

这可能是微不足道的。这真的取决于服务器正在做什么。收到请求后,您无法保证期望HEAD请求或GET请求的响应速度比其他请求更快。

理论上,因为对HEAD请求的响应应该与GET请求的响应相同,但是没有响应主体,应该更快,因为它传输的数据更少。但是没有人保证处理HEAD请求的一个连接比处理GET请求的另一个连接更快。

答案 4 :(得分:1)

您的问题需要注意的重要一点是,您正在谈论'获取请求和HEAD请求' - 而不是'获取响应和HEAD响应'

逻辑上 - 对HEAD和GET的请求都需要相同的时间从PC传输到服务器目的地。无论服务器对HEAD / GET执行什么操作都取决于服务器所有者,因此如果他们对HEAD / GET进行编码,他们可能会花费更长的时间。 如果你真的想进入语义,你可能会认为HEAD请求是一个额外的数据字符而不是GET请求,因此,HEAD请求在技术上必须在请求阶段传输1个字节以上的数据。在实践中,这将是请求时间中不可测量的差异。

如果你从'RESPONSES'离开服务器返回请求者的那一刻开始计时器,那么从逻辑上讲,GET响应将需要更长的时间才能通过网络传输。因为它通常由HEADERS和BODY组成 - BODY可以是大量的数据。

头部响应将花费更少的时间旅行,因为它只是HEADERS。 使用一个非常极端的例子 - 如果您发送4GB文件的GET请求,那么GET响应需要几分钟才能完成将数据写入网络流。 对同一4GB文件的HEAD请求几乎可以立即完成,因为它只发送一个高级别描述4GB文件的信息,而不必将其内容发送给请求者。

  

GET响应将包含HEAD + BODY。   HEAD响应仅包含HTTP标头。

我个人将HEAD请求与名为IPFS的技术结合使用 - 这是一种分布式互联网,其中文件和数据可以存储在P2P网络上。为了使文件在网络上保持活动状态,需要经常请求它们。但是,如果您通过GET请求提取文件,则最终使用带宽来下载几周前存储的4GB文件。 但是,在我的情况下,执行HEAD请求会使文件在网络上保持活动状态,但不会请求4GB数据通过网络传送给我。