我正在使用 CloudFront,很多时候我发现等待时间和接收时间太长。
根据Firebug文档,等待时间和接收时间的意思是:
等待 - 等待服务器的响应
接收 - /(从缓存)读取整个内容所需的时间 来自服务器的响应(和/或从缓存读取所需的时间)
我不明白为什么需要这么多时间以及我可以做些什么来减少时间?
您可以做很多事情。
Expires
、Cache-control
、ETag
等gzip
ped 版本 通过 WebpageTest.org 运行您的网站并浏览所有建议。
通过 YSlow 运行您的网站并浏览所有建议
这意味着浏览器正在等待服务器处理请求并返回响应。
当时间很长时,通常意味着您的服务器端脚本需要很长时间才能处理请求。
服务器端脚本速度缓慢的原因有很多,例如长时间运行的数据库查询、大文件的处理、深度递归等
要解决这个问题,您需要优化脚本。除了优化代码本身之外,减少后续请求执行时间的一个简单方法是实现某种服务器端缓存。
这意味着浏览器正在接收来自服务器的响应。
当时间较长时,要么意味着您的网络连接速度很慢,要么接收到的数据(太大)。
为了减少此时间,您需要改善网络连接和/或减小响应的大小。
可以通过压缩传输的数据来减少响应大小,例如通过启用
gzip
和/或在输出数据之前从输出中删除不必要的字符(例如空格)。对于 HTML 响应,请尝试减小 HTML 结构的大小。如果可能,您还可以为返回的数据选择不同的格式,例如使用 JSON 而不是 XML 来获取数据或直接返回 HTML。
为了普遍减少等待和接收时间,您可以实现一些客户端缓存,例如通过设置适当的 HTTP 标头,如
Expires
、Cache-Control
等。然后浏览器只会发出相当小的请求来检查是否有新版本的数据要获取。
您还可以通过将数据保存在客户端(例如将其放入本地或会话存储)而不是每次需要时从服务器获取来完全避免请求。