为什么本地请求不是几乎即时的?

为什么本地请求不是几乎即时的?

这纯粹是出于好奇,但对于我曾经设置的每个本地服务器,页面显示之前总会有 0.5-2 秒的延迟。

举个例子,我设置了一个完全空白的 ubuntu 服务器,运行 apache、mysql 和 php。如果我有一个包含 phpinfo(); 的文件,并从位于服务器旁边的机器请求该文件,页面仍然需要一两秒钟才能加载。为什么不是[几乎]即时的?

两台机器都运行四核处理器、8GB RAM 等,并使用千兆交换机。为什么像 phpinfo 这样的简单请求需要这么长时间才能“发生”?

答案1

有很多因素会影响显示时间。如果有任何代码,它仍然需要解释和运行。DNS 查找仍然会发生,因此会出现延迟(除非您让它们全部在本地主机查找)。浏览器渲染。协议的开销。

如果您有兴趣,可以运行 wireshark 并查看查找和协议的开销的网络端。

其余一切都来自服务器处理请求和客户端呈现响应所需的时间。

答案2

尝试使用 ab 进行基准测试:

ab -c 1 -n 1 http://your.server/page/

phpinfo() 会占用一些资源并花费一些时间,浏览器渲染也需要一些时间。在千兆局域网上,提供静态(简短)html 页面花了我 5 毫秒。

PS:现代浏览器真的很慢 :/

答案3

1.) 第一次访问服务器以及第一次调用有问题的 PHP 脚本实际上会导致解析大量配置、加载解释器(可能)、加载脚本、使 Web 服务器中的模块上线等。在后续查询中,它几乎总是更快。

2.) 即使在理想条件下,在 0.5 到 2 秒的时间内也会有许多活动部件在起作用 - 您的机器要经历几个 TCP 会话的设置(每个会话都需要几毫秒的握手),您的浏览器进行自我识别并与服务器协商功能,您的浏览器最终提交其请求,然后服务器必须解析该信息并将其在堆栈中上下传递,最后将其格式化为 HTML 并发送回给您。

现代脚本/网络平台的实现相当复杂。与 ping 服务器或放置静态“Hello world!” html 页面相比,它可能看起来有点繁重,但其通用功能相当令人印象深刻。

当然,另一点是,您描述的是一个完全现成的系统。几乎总有一些事情可以做来调整它,以便更好地响应您的特定工作量。

相关内容