【问题标题】:How to reduce server "Wait" time?如何减少服务器“等待”时间?
【发布时间】:2012-06-07 19:36:44
【问题描述】:

我正在尝试优化我的网站速度,我正在使用pingdom.com 的出色工具。现在,加载页面所需的时间超过 50% 是“等待”时间,如下面的屏幕截图所示。我能做些什么来减少这种情况?另外,这个数字有多典型?有这方面的基准吗?谢谢!

编辑: 好的..让我澄清一些事情。没有服务器端脚本或数据库调用正在进行。只有 HTML、CSS、JS 和图像。我已经做了一些事情,比如将 js 推送到 body 标签的末尾以获得并行下载。我知道 main.html 和 templates.html 通过在 js.js 下载后同步完成而增加了整体等待时间,这不是问题。我只是对每个请求有多少“等待”时间感到惊讶。服务器距离会影响这个吗?在共享服务器上怎么样,这会影响等待时间吗?是否有任何容易实现的目标来解决这些问题?

【问题讨论】:

标签: javascript performance apache networking


【解决方案1】:

对于 Apache,最常见的原因是使用了 DNS 反向查找。这意味着每次您发出请求时,服务器都会尝试找出您机器的名称。这可能需要几秒钟,这就解释了为什么您有很长的等待时间,然后加载速度非常快,因为问题与带宽无关。

明显的解决方案是在 /etc/httpd/conf/httpd.conf 中禁用主机名查找

HostnameLookups Off

但是……这通常是不够的。事实是,在许多情况下,即使您禁用了主机名查找,apache 仍然会进行反向查找,因此您需要仔细查看 apache 配置的每一行。特别是,最常见的原因之一是日志。默认情况下,在许多 red hat - centos 安装中,日志格式包括代表“主机名”的 %h,并且需要 apache 进行反向查找。你可以在这里看到:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

你应该把那些 %h 换成 %a 来解决这个问题。

【讨论】:

  • 谢谢伙计.. 任何来源推荐这样的提示?
  • @ÜnsalKorkmaz 给你httpd.apache.org/docs/2.2/mod/mod_log_config.html 编辑:对不起,我看错了。以为你说的是​​“任何资源推荐”。
  • HostnameLookups 已关闭,但 LogFormat 是罪魁祸首。通过将 %h 更改为 %a,我得到了 50% 的改进。
  • 我面临同样的问题。我正在使用 wordpress,网站托管在共享主机上。我找不到文件的位置,我可以在哪里进行这些更改。欢迎提出任何建议。
  • 从 %h 更改为 %a 后没有做任何更改
【解决方案2】:

如果您有多个页面正在等待的服务器请求,您可以确保这些服务器请求是并行异步发送的,以便您对它们进行序列化。

获取多个请求的最慢方法是发送一个请求,等待其响应,发送下一个请求,等待其响应等...异步发送所有请求然后处理所有响应通常要快得多当他们到达时。这将总等待时间缩短为任何单个请求的最长等待时间,而不是所有请求的累积等待时间。

如果您只发出一个请求,那么您在客户端所能做的就是确保在页面加载顺序中尽早将请求发送到服务器,以便其他部分该页面可以在处理请求的同时进行其业务,从而更快地启动初始请求(从而更快地完成)。

【讨论】:

    【解决方案3】:

    等待时间,也称为time to first byte,是服务器从连接启动开始发送第一个字节所需的时间。如果这个值很高,则意味着您的服务器在发送页面之前必须做很多工作来呈现页面。我们需要更多关于您的网站正在做什么来呈现页面的信息。

    【讨论】:

    • 很好,这也可能与您的 HDD/RAID 上的访问时间有关。我的 SSD 服务器的首字节 (TTFB) 时间更短,而且网站的加载速度确实更快。
    • 服务器可能需要做很多工作,但同样也可能需要做很多等待。在知道要解决什么问题以获得最大的胜利之前,您需要分解所用时间的组成。
    【解决方案4】:

    TTFB 直接受浏览器和服务器之间“物理”距离的影响。 CDN 代理是缩短上述距离的最佳方式。这与本机缓存功能相结合,将有助于通过从最近的 POP(放置点)位置加载缓存对象来提供更快的响应。

    效果将取决于用户的地理位置和 CDN 的传播。不过,您可以期待significant improvement,50%-70% 或更多。

    根据经验,我看到了一些案例,其中 90% 的内容被缓存并直接从位于不同大陆、来自地球另一端的代理交付。

    【讨论】:

      【解决方案5】:

      这是服务器的问题...根据 Pingdom 的说法,“Web 浏览器正在等待来自服务器的数据”定义了“等待”时间。

      您无法从 javascript 或代码端做很多事情来解决此问题。

      【讨论】:

      • 这不是等待时间。
      猜你喜欢
      • 2013-11-06
      • 2015-04-19
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      相关资源
      最近更新 更多