2010-03-01 131 views

回答

21

删除/最小化服务器端的瓶颈。为此,请使用Xdebug或Zend Debugger之类的分析器来查找应用程序执行的代价高昂且运行缓慢的情况。尽可能实现缓存。使用OpCode缓存。如果这仍然不够快,考虑投资更多的CPU或RAM或SSD(取决于您是CPU,IO还是内存绑定)

对于一般服务器/客户端优化,请参阅Yahoo YSlow! User Guide

它基本上概括起来到:

  1. 尽量减少HTTP请求
  2. 使用内容传送网络
  3. 添加过期或者缓存控制头
  4. Gzip已零部件
  5. 将样式表放在顶部
  6. 将脚本放在最下面
  7. 避免CSS表达式
  8. 使JavaScript和CSS外部
  9. 减少DNS查找
  10. 压缩JavaScript和CSS
  11. 避免重定向
  12. 删除重复的脚本
  13. 配置的ETag
  14. 让AJAX可缓存
  15. 使用GET进行AJAX请求
  16. 减少DOM元素的数量
  17. 没有404
  18. 减少饼干大小
  19. 使用Cookie的免费域名为组件
  20. 避免使用滤镜
  21. 不要放大图像在HTML
  22. 让小的favicon.ico并且可缓存

另请参见下面的评论作出了贡献,因为它们包含一些一其他用户的附加有用信息。

+3

还检查了谷歌”的PageSpeed HTTP:/ /code.google.com/speed/page-speed/是YSlow的一个很好的替代/补充,也是一个Firebug插件。它捕捉到YSlow不能做的一些事情,反之亦然。 – 2010-03-01 22:29:16

+1

还有一件事:如果您控制足够的服务器来安装额外的插件并具有足够的RAM,则使用内存中会话。 memcache插件包含一个会话处理程序。 http://php.net/memcache – Powerlord 2010-03-01 22:31:47

+1

很好的答案。所有这些事情都在这个(优秀的)雅虎文章中有更详细的解释:http://developer.yahoo.com/performance/rules.html – 2010-03-01 22:34:20

3

在尝试进行任何优化之前,首先需要能够配置文件,获取Firefox的FireBug。然后你可以运行一些分析,告诉你如何使用YSlow。你应该做的基本事情是列出here

2

这里有一些 “最佳实践” 的事情:

  • 缓存CSS,JavaScript,图片等
  • 缩小JavaScript文件。
  • gzip内容。
  • 尽可能在页面底部放置指向JavaScript文件,JavaScript代码和CSS文件的链接的链接。
  • 只加载需要的东西。
  • 对于现有的网站,在你做任何这些事情之前,要确定你的瓶颈在哪里,像Firebug这样的工具,以及其他人提到的YSlow(我强烈推荐这个工具)。
2

有两个方面优化的时候,你可以关心,:

  • 服务器端:重要的是产生的输出中更快
  • 客户端:重要的是让所有的有显示得更快。

注意:作为开发人员,我们经常首先考虑优化服务器端......在大多数情况下,这只占页面加载时间的不到10%!


在服务器端,你通常要:

  • 曲线,以确定什么是长
  • 优化您的SQL查询,并减少其数量
  • 使用缓存

欲了解更多信息,你可以看看我前一段时间给这个问题的答案:Optimizing Kohana-based Websites for Speed and Scalability


在客户端,最大的收益一般是通过实现:

  • 减少HTTP请求的数量 - 最简单的方法是减少的JS/CSS /图像文件的数量,由将几个文件合并成一个文件
  • 压缩CSS/JS/HTML,例如使用Apache的mod_deflate

有关,对Yahoo's Exceptional Performance了很多伟大的东西:他们已经发布了大量的good pratices和工具,如yslow

2

我能想到的最简单的选项是:

  1. Gzip已(X)HTML,所以压缩文件应该更迅速地向用户
  2. 到达缩小的CSS
  3. 缩小的JS
  4. 使用缓存尽可能
  5. 使用内容传递网络
  6. 使用工具,如yslow识别瓶颈和进一步的建议
+0

@bn的确的编辑,以纠正。谢谢=] – 2010-03-01 23:11:57

2

肯定想看看缓存,因为往返数据库是昂贵的。 also,minify JS

0

要减少网络流量,可以缩小静态文件(如CSS和Javascript),并对生成的内容使用gzip压缩。您也可以尝试使用optipng等工具来缩小图像的大小。

但是,要采取的第一步是实际分析需要花费的时间 - 无论是通过网络发送位,还是实际生成要发送的内容。如果需要一分钟来生成每个HTML页面,那么将CSS文件缩小10%是没有意义的。

-3

负载平衡将有助于减少巨大的加载时间。

+2

不,几乎所有情况下都不会。 – MarkR 2010-03-01 22:32:23

1

第一个优化是:决定它是否缓慢,如果不是,请不要打扰。

这比听起来更棘手,因为它不像测试桌面应用程序或游戏。如果在目标硬件上播放游戏,游戏速度会很慢,帧速率太低。这很容易衡量。

一个网站更棘手,因为作为开发人员,您可能正在使用本地测试系统和非常快速的网络。即使使用登台/系统测试服务器,您仍可能仍在本地网络中。即使你的生产服务器很可能在同一大陆。

对于很多用户来说,情况可能并非如此。

因此其存在的选项有:

  • 找出通过询问用户,是否觉得它是慢
  • 模拟高延迟的环境和自己(或您的QA团队)测试
  • 猜测

后者不建议。

一个比你的雅虎网站性能书(这是一本你可以购买的书)更不用提的很多HTTPS选项。大多数处理重要数据的Web应用程序主要或完全通过HTTPS运行,这更改了游戏规则。记住要启用所有测试。

2

安装萤火虫和插件的PageSpeed如下 所有的PageSpeed指令(至可能的),而且要快乐 http://code.google.com/intl/it/speed/page-speed/

反正在我的经验中最重要提示优化是HTTP请求的数量减少到最低限度?

0

不要在代码中使用空格。

1

前面已经提到的,你可以使用YSlow的或的PageSpeed火狐延期。但是您也可以使用GTmetrix,这是一款使用这两种工具扫描页面的在线服务。

特点我喜欢/用途:

  • 柔软,清洁,可用presention
  • 与其他网页进行比较。看看你的朋友/竞争者在哪里真的很有趣。

(顺便说一句,我没有相关gtmetrix!)