我如何才能优化我的 ajax 调用以实现 60ms 的交付速度。

我如何才能优化我的 ajax 调用以实现 60ms 的交付速度。

我正在建立一个自动完成功能对于我的网站和Google 即时结果是我的基准

当我查看 Google 时,50-60 毫秒的响应时间让我感到困惑。

在此处输入图片描述

它们看上去太疯狂了。相比之下,我的是这样的。

在此处输入图片描述

为了让您了解,我的结果缓存在负载均衡器上,并由具有以下功能的机器提供:httpd slowstart 和 initcwnd已修复。我的网站也支持 cloudflare

从服务器端的角度来看,我认为我无法再做任何事情。

有人可以帮我拿这个吗响应时间从 500 毫秒缩短至 60 毫秒我还应该做什么达到 Google 级别的性能?

编辑:
各位,你们似乎对我与谷歌的比较感到生气,而且这个问题非常笼统。对此我深表歉意。

重新表述:如何将响应时间从 500 毫秒缩短至 60 毫秒假设我的服务器响应时间只有几毫秒。假设结果由 Nginx -> Varnish 提供,缓存命中。
以下是一些我想自己回答的答案,假设响应大小大致保持不变。

  1. 确保结果是 http 压缩的
  2. 如果你使用 https,请确保使用 SPDY
  3. 确保将 initcwnd 设置为 10,并禁用 Linux 机器上的慢启动。
  4. ETC。

我认为我不会达到 Google 级别的 60 毫秒,但你们的集体专业知识可以帮助轻松缩短 100 毫秒,这是一个巨大的胜利。

答案1

为了实现类似的性能,需要注意以下重要事项:

  • 客户端和服务器之间的往返时间。Google 已在全球各地部署服务器,以便始终有一些服务器靠近客户端。
  • 所需的网络往返次数。打开 TCP 连接并发送 HTTP 请求至少需要两次往返。HTTPS 需要更多往返。找出使用的往返次数,以及技术上是否可以减少往返次数。如果在请求之间保持连接,则应该可以在一次往返中完成请求。
  • 注意请求之间的依赖关系。页面结构是否允许所有资源并行下载,还是按顺序下载?
  • 服务器上有足够的 RAM。如果你想要充分利用系统的每一毫秒的性能,你就不能等待磁盘寻道。
  • 避免使用线性算法。如果服务器需要使用与数据大小成线性关系的时间才能响应请求,则其性能不太可能很好。如果数据驻留在内存中,则与搜索的数据大小成对数关系的算法应该可以正常工作。
  • 注意资源使用情况。是否有任何网络链接饱和,服务器接收请求时网络往返时间是否会增加,是否有某些东西占用了服务器上的额外内存并将数据结构推离 RAM?

答案2

这里提出的问题不是重复的,但非常相似:

https://stackoverflow.com/questions/132359/how-can-google-be-so-fast

它可以帮助您更深入地了解 Google 为取得更好的结果所做的工作。

相关内容