POST与GET方法 - 在网络级别,受延迟影响更大?

fra*_*lic 2 networking post latency get http

HTTP GET和POST请求的网络通信有什么区别吗?

通过GET,我了解整个请求是一次性发送的.使用POST,我认为发送了初始请求,然后发送了第二个发送所有参数的请求.

例如,假设服务器和客户端之间的延迟是500毫秒.GET与POST通话的总时间是多少?

Inc*_*ito 8

数据包都是TCP数据包,它携带HTTP协议,请求方法不会改变网络层的响应时间.

它将根据请求的大小进行更改,具体取决于请求的大小,但这不是由请求类型决定的.

您可以使用post发送比get更多的数据,但这并不意味着它们响应更快,这是一个单独的问题.

HTTP服务器可以处理并返回结果的速度在您正在使用的服务器上,并且可能是如此微不足道,因此不值得一提.

结果从服务器返回的速度取决于HTTP服务器正在处理的资源,如果它调用需要时间的PHP文件,则需要时间......

数据包没有明显的区别......这是通过SSL的GET请求:

00907f8252f7001e4fe86a93080045000028
0bb2400080067380ac100167adc22064c51a
01bb66ccad148448d84850103f05bde90000
Run Code Online (Sandbox Code Playgroud)

这是一个通过SSL的POST请求:

00907f8252f7001e4fe86a93080045000028
0c0640008006732cac100167adc22064c511
01bbe538c0df8621dc6150104042248c0000
Run Code Online (Sandbox Code Playgroud)

关于TCP数据包中的字符串是"GET"还是"POST"并没有很多参与,网络看着它,说"哦,你是TCP,嗯?好吧,你走了之后. " 它并不关心.

正常网络流量之外的任何延迟都是由于在服务器级别上处理或者正在处理的代码而导致的.


vol*_*ron 7

由于记录较少,POST请求具有优势

给定相同数量的信息(POST消息不超过GET),POST在服务器端技术上应该更快(纳米到皮秒):

  • 通常,Web服务器(如Apache)会在某处记录请求
  • POST请求不记录查询字符串,因此写入处理较少.服务器IOPS可能会无意中影响延迟

    如果没有这个,给定相同的数据包,它们实际上是等价的.
    GET将数据存储在查询字符串中,POST将信息存储在消息正文中.
    服务器以不同的方式处理两者.

在客户端,POST需要更多处理来准备消息.如果做任何AJAX,你会注意到这一点,发送GET请求要比POST容易得多.

GET具有超越POST请求的能力

  1. 根据HTTP/1.1上的w3定义,GET能够执行部分请求,从而限制网络带宽:

    如果请求消息包括Range头字段,则GET方法的语义变为"部分GET".部分GET请求仅传输实体的一部分,如第14.35节所述.部分GET方法旨在通过允许完成部分检索的实体而不传输客户端已经拥有的数据来减少不必要的网络使用.

  2. 另外,w3描述了一种减少网络使用的条件GET:

    如果请求消息包括If-Modified-Since,If-Unmodified-Since,If-Match,If-None-Match或If-Range头字段,则GET方法的语义变为"条件GET".条件GET方法请求仅在条件头字段描述的情况下传送实体.条件GET方法旨在通过允许刷新缓存的实体而不需要多个请求或传输客户端已经拥有的数据来减少不必要的网络使用.

  3. GET请求是可缓存的.这减少了网络带宽,因为浏览器可能会看到过去已经发出的请求,该请求尚未过期,并且通过来自缓存的看似即时的响应进行响应.