javascript - 为什么第一个网络调用比后续调用花费更多时间?

标签 javascript ajax api google-chrome web

我试图理解这种行为,即第一个网络调用需要后续调用的两倍以上。我知道 DNS 解析不会超过 5-50 毫秒,而且只发生在初始调用中。考虑到此信息,第一次调用和后续调用所花费的时间应该不会有太大差异。

我已经在单独的隐身窗口中使用一些著名的 URL 测试了这种行为,每个 URL 都禁用了缓存,并附上了一些屏幕截图以支持我在下面的观察。谁能帮助我理解这种行为?

注意:读数是在全速互联网连接下获取的

提前致谢

enter image description here

enter image description here

enter image description here

enter image description here

最佳答案

经过几次实验,我发现 Content Download ( browser request steps ) 部分请求提速了 1.5-2 倍 这看起来像是 TCP Slow Start algorithm 的原因

正如它所说:

modern browsers either open multiple connections simultaneously or reuse one connection for all files requested from a particular web server

这可能是第一个请求比其他请求慢的原因

此外,@Vishal Vijay 做了一个很好的补充:

与服务器建立初始连接握手需要时间(DNS 查找 + 初始连接 + SSL)。浏览器正在为 HTTP 请求创建持久连接并保持打开一段时间。如果在这段时间内有任何请求进入同一域,浏览器将尝试重新使用同一连接以获得更快的响应。

关于javascript - 为什么第一个网络调用比后续调用花费更多时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54078692/

相关文章:

Javascript 事件通过 sass mixin 改变样式

javascript - 如何移动到数组的上一个/下一个元素

php - 使用ajax将Null插入数据库

javascript - 比较客户端时间戳和服务器时间戳

java - 如何检测浏览器是桌面浏览器还是移动浏览器?我想使用 Java,但不想使用 WURFL

javascript - 使用 Bootstrap 3 和 Bootstrap 2

javascript - 简单的ajax给出status == 0错误

java - 使用 Android java 在 WhatsApp 上自动发送消息?

python - 如何制作 Flask 端点?

windows - Windows API 是否提供对内核的访问权限,还是比这更复杂?