影响Ajax调用速度的因素

What affects the speed of an Ajax call?

本文关键字:速度 Ajax 调用 影响      更新时间:2023-09-26

我知道发送到服务器的数据量,以及调用中返回的信息的多少会影响调用的速度。

但是,我想知道的是,以下这些措施是否会对发送信息到服务器,处理服务器上的调用以及最终返回的内容产生影响:

  • 用户网络连接速度
  • 服务器配置和速度
  • 数据类型(HTML,json等)

如果我遗漏了任何其他重要的因素,请也提出来。

下面是Ajax调用中的事件顺序:

    在客户端Javascript中创建Ajax请求
  1. 发起Ajax调用
  2. 浏览器查找DNS条目以获取目标服务器的IP地址
  3. 浏览器建立TCP连接到服务器
  4. 服务器接受传入连接
  5. 浏览器向服务器发送请求
  6. 网络向服务器发送请求
  7. 服务器接收传入请求并将其路由到适当的请求处理程序
  8. 服务器请求处理程序处理请求并创建响应
  9. 服务器返回响应
  10. 网络将响应传递回客户端
  11. 客户端接收响应并解析它以供代码
  12. 使用
  13. 客户端代码接收Ajax响应
  14. TCP连接关闭。

这些步骤中有很多是连接机制。为了获得快速性能,所有这些连接步骤都必须是快速的。

您直接从客户端Javascript控制的步骤实际上只有6(您发送的数据大小)和10-11(您请求的服务器响应大小)。

这些步骤中的许多都受到网络连接的吞吐量或网络连接的延迟或两者的影响。移动连接(3g/4g/5g)通常比其他类型的连接具有更慢的延迟。

正如您所看到的,许多步骤都涉及到服务器的响应性。

如果连接中涉及SSL,那么在连接机制中还有相当多的步骤。

HTTP2连接(如果两端都支持)可以通过本质上保持一个连接活动以用于多个请求来加快一些连接机制,这样就不必每次都从头创建一个新的套接字。


客户端可以做的主要事情是:

  1. 减少Ajax请求数量。尝试在客户端和服务器上构建代码,以便客户端可以在一个请求中请求所需的所有数据,而不是需要在一个操作中发出几个不同的请求。
  2. 如果客户端正在发出多个请求,那么尝试并行化它们(同时启动多个请求),而不是发出请求,等待响应,发出下一个请求。序列化请求大大增加了端到端时间。
  3. 通过快速网络连接。
  4. 发送所需的最小数据量
  5. 请求最小的数据量。

也可以将网络协议从HTTP更改为HTTP2 (SPDY)。

SPDY的目标

SPDY项目为web定义并实现了一个应用层协议,大大降低了延迟。SPDY的高级目标是:

  • 目标是减少50%的页面加载时间。我们的初步结果已经接近这个目标。
  • 最小化部署复杂性。SPDY使用TCP作为底层传输层,因此不需要更改现有的网络基础结构。
  • 避免网站作者对内容进行任何更改。支持SPDY所需的惟一更改是在客户端用户代理和web服务器应用程序中。
  • 将有兴趣探索协议作为解决延迟问题的一种方式的志同道合的各方聚集在一起。我们希望与开源社区和行业专家合作开发这个新协议。
  1. 减少Ajax请求的数量
  2. 在适当的时候使用GET请求
  3. 减少数据传输量
  4. 优化服务器
  5. 提高JavaScript代码的性能
  6. 最后,每个请求取决于你的网络带宽