【问题标题】:How to Reduce 'Waiting Time' and 'Receiving Time' on Page Load如何减少页面加载时的“等待时间”和“接收时间”
【发布时间】:2017-02-19 08:03:09
【问题描述】:

我正在使用 CloudFront,但我多次看到等待时间和接收时间太长。

根据Firebug文档,等待时间和接收时间是指:

Waiting - 等待来自服务器的响应

Receiving - / (from cache) 读取整个数据所需的时间 来自服务器的响应(和/或从缓存中读取所需的时间)

我不明白为什么要花这么多时间,我可以做些什么来减少时间?

【问题讨论】:

标签: performance firebug amazon-cloudfront pagespeed


【解决方案1】:

你可以做很多事情。

  1. 设置适当的标题ExpiresCache-controlETag
  2. 使用资产的gzipped 版本
  3. 尽可能使用用户精灵。将你的 CSS 文件合并为一个,将你的 JS 文件合并为一个

通过WebpageTest.org 运行您的网站并查看所有建议。

通过YSlow 运行您的网站并查看所有建议

【讨论】:

  • Expires 和其他的都设置好了。精灵或没有精灵与等待时间或接收时间没有直接关系!这些时间可以是精灵图像。是的,但它会不止一次。
  • 我认为这完全是因为 CloudFront 不在印度。现在它在印度,但现在我不从事网络开发。
【解决方案2】:

等待

这意味着浏览器正在等待服务器处理请求并返回响应。

如果这个时间很长,通常意味着您的服务器端脚本需要很长时间来处理请求。

服务器端脚本运行缓慢的原因有很多,例如长时间运行的数据库查询、大文件的处理、深度递归等。

要解决这个问题,您需要优化脚本。除了优化代码本身,一个简单的方法是减少后续请求的执行时间是实现某种服务器端缓存。

接收

这意味着浏览器正在接收来自服务器的响应。

如果那个时间很长,要么意味着你的网络连接很慢,要么接收到的数据(太大)。

因此,要减少此时间,您需要改善网络连接和/或减少响应的大小。

可以通过压缩传输的数据来减小响应大小,例如通过启用gzip 和/或在输出数据之前从输出中删除不必要的字符(如空格)。您还可以在可能的情况下为返回的数据选择不同的格式,例如对数据使用 JSON 而不是 XML,或者直接返回 HTML。

一般

为了通常减少等待和接收时间,您可以实现一些客户端缓存,例如通过设置适当的 HTTP 标头,如 ExpiresCache-Control 等。然后浏览器只会发出相当小的请求来检查是否有新版本的数据要获取。

您还可以通过将数据保存在客户端(例如,将其放入本地或会话存储)来完全避免请求,而不是每次需要时都从服务器获取。

【讨论】: