我们正在计划开发一个新的网站。我们的目标是快速加载网页 。我们需要遵循哪些技巧?快速加载网页
任何人都可以给我很好的建议,论坛链接或文章。
我们的平台是PHP,MySQL,Javascript和AJAX。
我们正在计划开发一个新的网站。我们的目标是快速加载网页 。我们需要遵循哪些技巧?快速加载网页
任何人都可以给我很好的建议,论坛链接或文章。
我们的平台是PHP,MySQL,Javascript和AJAX。
一个加快你的网站的加载时间的最佳指南:
http://developer.yahoo.com/performance/rules.html
更新:谷歌现在拥有一支优秀的引导以及
http://code.google.com/speed/page-speed/docs/rules_intro.html
随着一个更好的addon for Firefox。在我迄今为止的测试中,Google的Page Speed插件远远胜过YSlow。它提供了更详细的分析和更聪明的建议(而不是像YSlow这样的小型网站推荐CDN)
一个有用的工具是YSlow这是一个来自雅虎的工具,可帮助识别网页性能问题。此外,雅虎的Best Practices for Speeding Up Your Web Site是一个很好的清单。
但是,有关此问题的某些观点,请参阅Jeff的博客条目Yahoo's problems are not your problems。
+1对于雅虎的问题不是你的问题。 – 2009-02-25 17:41:24
同上肖恩的评论。 – 2009-02-25 17:50:01
+1链接到Jeff的博客。 – altermativ 2009-03-16 14:09:50
使用PHP的分析器来确保您的代码以合适的速度执行。重构(如果可能的话)如果性能可以提高。
一些随机点。
渐进渲染而不是将其构建在内存中,并在最后发送给出明显的印象的速度。
您可以使用一些高级缓存技巧,例如正向缓存(这是Akamai在大规模上执行的操作)并分隔静态和动态内容。
对于PHP来说,特别要小心复制大量的数据。由于它是“默认复制”,PHP 4因此而臭名昭着,但它仍然有点太容易让大量数据交给PHP 5.换句话说:不要复制(或创建!)字符串,数组和不必要的物品;与他们一起工作并传递参考。
除了说了些什么:
压缩所有的文件,包括CSS和JS文件也压缩你的PHP文件。尽可能少的数据库调用,并如前所述缓存所有的回报。
1)mod_gzip/mod_deflate!这是一个简单的修复,我很惊讶它默认情况下没有打开。
2)玩你的URL的技巧,所以你可以告诉浏览器永远缓存你的JS和CSS文件。换句话说,构造URL的样子:
http://www.yourdomain.com/js/mad_scriptz-v123.js
然后使用mod_rewrite并去掉了 “-v123”:
<IfModule mod_rewrite.c>
# http://www.thinkvitamin.com/features/webapps/serving-javascript-fast
RewriteEngine on
RewriteRule ^/(.*)\-v[0-9.]+\.(css|js|gif|png|jpg|xap)$ /$1.$2 [L]
</IfModule>
现在Apache会去寻找“/js/mad_scriptz.js “...每当你改变你的静态内容时,只需修改版本号码即可强制浏览器重新加载内容。我通常有一个模板变量,其中包含一切全局的全局版本号。不是最有效率的,但适用于我的目的。如果您可以将版本号绑定到您的构建系统或文件的散列,那将会更加甜蜜。
获取指定mod_expires,使得所有的你的静态的东西到期年从现在开始:
<IfModule mod_expires.c>
ExpiresActive On
# all in seconds...
ExpiresByType image/x-icon A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/css A2592000
ExpiresByType application/rdf+xml A1800
</IfModule>
更新:有人指出,并非所有的浏览器或类似gzip压缩内容的搜索引擎。不要像我上面所建议的那样盲目地打开它。确保即使他们接受它,也不会馈送古董浏览器gzip(其中一些会使用压缩的javascript得到pissy)。 mod_gzip和mod_deflate的文档都有应该工作正常的例子(我假设他们这样做,或者人们会通过电子邮件发送更改:-)。
我还应该提一下,根据我的经验,如果你在mod_gzip的Apache服务器和世界之间有一个反向代理,那么你需要小心。 Squid 2.6经常会欺骗Apache,当它应该更糟时,它会缓存未压缩的东西,并将它们提供给可以处理gzip内容的浏览器。不知道,如果3.0修复这个,我不知道它是否在我的配置错误(怀疑它)。只要小心:-)
这就是说。打开它。认真地:-)
雅虎:“把样式表放在最前面”,“把脚本放在最下面”。
这使我最近的网站比其他任何优化都快。
下面是我总是发现有用的一个提示: 如果你有很多微小的图像,把它们放在一个平铺的图像。在你的CSS声明,通过操纵背景的X和Y坐标控件的HTML元素的视口:
.icon {
background-image:url(static/images/icons.png);
height:36px;
width:36px;
}
.food {
background-position:-52px -8px;
}
.icon_default {
background-position:-184px -96px;
}
平铺在Python脚本来完成,或者通过手,如果你有一个管理组。
Gmail也这样做。参见:http://mail.google.com/mail/images/2/5/greensky/icons7.png
一个项目,与一些在雅虎准则点(http://developer.yahoo.com/performance/rules.html)帮助是Minify它采用微小,包捆绑在同一个空间服务条件HTTP,具有良好的设计实践中使用可以显著减少页面加载,尤其是用户体验(与实际的页面加载时间不同)。
'快'有多快?你真的期望什么样的负载?应用程序将如何托管?你究竟会做什么?在写'速度够快'的东西和可以处理Facebook规模的东西之间有一个世界性的区别。 – 2009-02-25 17:46:07