是什么影响了Ajax调用的速度?

时间:2015-09-23 05:50:13

标签: javascript jquery ajax performance

我知道在呼叫中发送到服务器的数据量以及返回的信息量会影响呼叫的速度。

但是,我渴望知道的是,下面这些措施中的任何一项是否会对将信息发送到服务器,处理服务器上的呼叫以及最终返回的内容产生影响:

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

如果我错过了其他重要因素,请同时提及。

3 个答案:

答案 0 :(得分:3)

此外,您可以将网络协议从HTTP更改为HTTP2(SPDY)。

SPDY的目标

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

  • 目标是减少50%的页面加载时间。我们的初步结果已接近这一目标。
  • 最小化部署复杂性。 SPDY使用TCP作为底层传输层,因此不需要更改现有网络基础结构。
  • 避免网站作者对内容进行任何更改。支持SPDY所需的唯一更改是在客户端用户代理和Web服务器应用程序中。
  • 将对探索协议感兴趣的志同道合的各方聚集在一起,以解决延迟问题。我们希望与开源社区和行业专家合作开发这一新协议。

答案 1 :(得分:2)

这是Ajax调用中的事件序列:

  1. 在客户端Javascript中创建Ajax请求
  2. 启动Ajax调用
  3. 浏览器查找DNS条目以获取目标服务器的IP地址
  4. 浏览器建立与服务器的TCP连接
  5. 服务器接受传入连接
  6. 浏览器启动向服务器发送请求
  7. 网络向服务器发送请求
  8. 服务器接收传入请求并将其路由到适当的请求处理程序
  9. 服务器请求处理程序处理请求并创建响应
  10. 服务器发回响应
  11. 网络将响应发送回客户
  12. 客户端收到响应并解析它以供代码消费
  13. 客户端代码接收Ajax响应
  14. TCP连接已关闭。
  15. 这些步骤中有很多是连接机制。为了快速执行,所有这些连接步骤必须快速。

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

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

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

    如果连接涉及SSL,那么连接机制中还有很多步骤。

    HTTP2连接(如果两端都支持)可以通过基本上保持连接活动来加速某些连接机制来用于多个请求,因此每次都不必从头开始创建新套接字。

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

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

答案 2 :(得分:0)

  1. 减少Ajax请求数
  2. 适当时使用GET请求
  3. 减少传输的数据量
  4. 优化服务器
  5. 提高JavaScript代码的性能
  6. 最后,每个请求都取决于您的网络带宽