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