【问题标题】:What affects the speed of an Ajax call?什么会影响 Ajax 调用的速度?
【发布时间】:2015-12-20 07:40:05
【问题描述】:

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

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

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

如果我遗漏了任何其他重要因素,也请务必提及。

【问题讨论】:

  • 是的,是的,否 - 用户的网络速度只是等式的网络方面的一部分...拥塞、速度问题、延迟等 用户工作站和服务器之间路由上的任何地方 将影响 Ajax 调用的整体“速度”
  • 您错过了服务器连接速度。这一次让我和我的团队感到意外。我们启动了一个 Facebook 应用程序来配合我们的 web 应用程序,服务器速度慢得像爬行一样。当我们通过 SSH 连接到服务器时,我们发现服务器负载并不太高。事实上,这是可以接受的——服务器本身并不忙。我们花了一段时间才意识到我们的 1Mbps 连接是瓶颈。我们升级了托管计划,并在同一天将所有静态文件移至 CDN。
  • @slebetman,感谢您指出这一点。你可能不关心的事情,但它会给你带来麻烦。完美:)

标签: javascript jquery ajax performance


【解决方案1】:

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

  1. 在客户端 Javascript 中创建 Ajax 请求
  2. 启动 Ajax 调用
  3. 浏览器查找 DNS 条目以获取目标服务器的 IP 地址
  4. 浏览器与服务器建立 TCP 连接
  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. 请求所需的最少数据量。

【讨论】:

  • 非常详细且解释清楚。谢谢大家:)
【解决方案2】:

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

SPDY 的目标

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

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

【讨论】:

  • 这是一个很好的选择,而且解释得很好。感谢负载伙伴。
【解决方案3】:
  1. 减少 Ajax 请求的数量
  2. 在适当的时候使用 GET 请求
  3. 减少传输的数据量
  4. 优化服务器
  5. 提高 JavaScript 代码的性能
  6. 最后,每个请求都取决于您的网络带宽

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多