我有一个域名要测试。Ping 约为 20 毫秒。“HTTP HEAD”约为 500 毫秒。
为什么他们之间有这么大的区别?这是服务器端的问题吗?是不是差别太大了?25 次。
Ping 通常实现为 ICMP 回显请求。一个更简单的数据报协议:您发送一个数据包,服务器回复相应的数据包,仅此而已。
HTTP HEAD 仍然是 HTTP:必须在两端建立 TCP 连接,并且 HTTP 服务器必须回复您的请求的标头。它显然很快,但不像发送单个数据包响应那么简单。
如果您正在测试一个域,ping 是一个更合适的工具,而 HTTP HEAD 是一个更适合测试HTTP 服务器的工具。
好吧,首先,ping 通过不同的协议 ICMP。服务器本身直接响应 ping。HTTP 是一种不同的协议,由必须在服务器上运行的附加应用程序(即 Web 服务器)处理(ping 内置于操作系统中)。根据网络服务器的重量,与 ping 之类的东西相比,它可能需要更多的时间。此外,HEAD 与特定 URL 一起发送。如果该 URL 由诸如 ASP.NET 之类的东西而不是直接由 Web 服务器处理,则必须进行额外的处理才能返回响应。
如果我没记错的话,ping 请求是在网络驱动程序级别处理的,因此速度非常快(有时它由硬件本身处理,完全跳过软件处理)。它将很好地描绘网络延迟。
一个HTTP HEAD
请求必须访问 web 服务器,这是一个用户级程序,需要多次复制数据位,以及解析请求的 web 服务器代码等。然后 web 服务器必须为要求。根据服务器和请求的页面,这可能需要一段时间,因为无论如何它都必须生成请求的页面(它只向您发送标题,而不是页面内容。)
当您运行 ping 时,它的响应速度要快得多,因为它旨在立即响应。它向您显示近似延迟,因此如果您使用 ping 获得一致的结果,则无法获得比这更低的延迟。
当您运行时,HTTP HEAD
您实际上是在向特定页面发出请求,它会被处理、执行并呈现,并且只返回 head。与 ping 相比,它的开销要多得多,这就是为什么它需要更长的时间。