我知道发送到服务器的数据量以及调用中返回的信息量会影响调用的速度。
但是,我很想知道的是,以下这些措施是否会对将信息发送到服务器、在服务器上处理调用以及最终返回的内容产生影响:
- 用户的网络连接速度
- 服务器配置和速度
- 数据类型 (HTML、jsonp 等)
如果我遗漏了任何其他重要因素,请一并提及。
最佳答案
以下是 Ajax 调用中的事件序列:
- 在客户端 JavaScript 中创建 Ajax 请求
- 发起 Ajax 调用
- 浏览器查找 DNS 条目以获取目标服务器的 IP 地址
- 浏览器与服务器建立 TCP 连接
- 服务器接受传入连接
- 浏览器发起向服务器发送请求
- 网络将请求传送到服务器
- 服务器接收传入请求并将其路由到适当的请求处理程序
- 服务器请求处理程序处理请求并创建响应
- 服务器发回响应
- 网络将响应返回给客户端
- 客户端接收响应并解析它以供代码使用
- 客户端代码接收 Ajax 响应
- TCP 连接已关闭。
其中很多步骤都是连接机制。为了获得快速性能,所有这些连接步骤都必须快速。
您直接从客户端 JavaScript 控制的步骤实际上只有 6(您发送的数据大小)和 10-11(您要求的服务器响应大小)。
其中许多步骤都受到网络连接吞吐量或网络连接延迟或两者的影响。移动连接 (3g/4g/5g) 通常比其他类型的连接具有更慢的延迟。
正如您所看到的,许多步骤都涉及服务器的响应能力。
如果连接中涉及 SSL,则连接机制中还有相当多的步骤。
HTTP2 连接(如果两端都支持)可以通过本质上保持连接处于事件状态以用于多个请求来加速某些连接机制,因此不必每次都从头开始创建新的套接字。
<小时/>客户端可以做的主要事情是:
- 减少 Ajax 请求的数量。尝试在客户端和服务器上构建代码,以便客户端可以在一次请求中请求所需的所有数据,而不是需要在一次操作中发出多个不同的请求。
- 如果客户端发出多个请求,请尝试并行化它们(同时启动多个请求),而不是发出请求,等待响应,然后发出下一个请求。序列化请求会大大增加端到端时间。
- 通过快速网络进行连接。
- 发送所需的最少量数据。
- 请求所需的最小数据量。
关于javascript - 什么会影响 Ajax 调用的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32731921/