1.Put Scripts at the Bottom
把脚本置于页面底部
http://developer.yahoo.com/performance/rules.html#js_bottom
脚本带来的问题就是它阻止了页面的平行下载。HTTP/1.1 规范建议,浏览器每个主机名的并行下载内容不超过两个。
如果你的图片放在多个主机名上,你可以在每个并行下载中同时下载2个以上的文件。但是当下载脚本时,浏览器就不会同时下载其它文件了,即便是主机名不相同。
在某些情况下把脚本移到页面底部可能不太容易。比如说,如果脚本中使用了document.write来插入页面内容,它就不能被往下移动了。这里可能还会有作用域的问题。很多情况下,都会遇到这方面的问题。
一个经常用到的替代方法就是使用延迟脚本。DEFER属性表明脚本中没有包含document.write,它告诉浏览器继续显示。不幸的是,Firefox并不支持DEFER属性。在Internet Explorer中,脚本可能会被延迟但效果也不会像我们所期望的那样。如果脚本可以被延迟,那么它就可以移到页面的底部。这会让你的页面加载的快一点。
2.Make JavaScript and CSS External
使用外部JavaScript和CSS
http://developer.yahoo.com/performance/rules.html#external
很多性能规则都是关于如何处理外部文件的。但是,在你采取这些措施前你可能会问到一个更基本的问题:JavaScript和CSS是应该放在外部文件中呢还是把它们放在页面本身之内呢?
在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。内置在HTML文档中的 JavaScript和CSS则会在每次请求中随HTML文档重新下载。这虽然减少了HTTP请求的次数,却增加了HTML文档的大小。从另一方面来说,如果外部文件中的JavaScript和CSS被浏览器缓存,在没有增加HTTP请求次数的同时可以减少HTML文档的大小。
关键问题是,外部JavaScript和CSS文件缓存的频率和请求HTML文档的次数有关。虽然有一定的难度,但是仍然有一些指标可以一测量它。如果一个会话中用户会浏览你网站中的多个页面,并且这些页面中会重复使用相同的脚本和样式表,缓存外部文件就会带来更大的益处。
许多网站没有功能建立这些指标。对于这些网站来说,最好的坚决方法就是把JavaScript和CSS作为外部文件引用。比较适合使用内置代码的例外就是网站的主页,如Yahoo!主页和My Yahoo!。主页在一次会话中拥有较少(可能只有一次)的浏览量,你可以发现内置JavaScript和CSS对于终端用户来说会加快响应时 间。
对于拥有较大浏览量的首页来说,有一种技术可以平衡内置代码带来的HTTP请求减少与通过使用外部文件进行缓存带来的好处。
其中一个就是在首页中内置 JavaScript和CSS,但是在页面下载完成后动态下载外部文件,在子页面中使用到这些文件时,它们已经缓存到浏览器了。
3.Minify JavaScript and CSS
削减JavaScript和CSS
http://developer.yahoo.com/performance/rules.html#minify
精简JavaScript中目前用到的最广泛的两个工具是JSMin和YUI Compressor。YUI Compressor还可用于精简CSS。
JSMin
http://crockford.com/javascript/jsmin
YUI Compressor
http://developer.yahoo.com/yui/compressor/
在对美国前10大网站的调查中发现,精简也可以缩小原来代码体积的21%,而混淆可以达到25%。尽管混淆法可以更好地缩减代码,但是对于JavaScript来说精简的风险更小。
4.Remove Duplicate Scripts
剔除重复脚本
http://developer.yahoo.com/performance/rules.html#js_dupes
在Internet Explorer中会产生不必要的HTTP请求,而在Firefox却不会。
除增加额外的HTTP请求外,多次运算脚本也会浪费时间。在Internet Explorer和Firefox中不管脚本是否可缓存,它们都存在重复运算JavaScript的问题。
5.Minimize DOM Access
减少DOM访问
http://developer.yahoo.com/performance/rules.html#dom_access
使用JavaScript访问DOM元素比较慢,因此为了获得更多的应该页面,应该做到:
缓存已经访问过的有关元素
线下更新完节点之后再将它们添加到文档树中
避免使用JavaScript来修改页面布局
有关此方面的更多信息请查看Julien Lecomte在YUI专题中的文章“
高性能Ajax应该程序”。
高性能Ajax应该程序:
http://yuiblog.com/blog/2007/12/20/video-lecomte/
6.Develop Smart Event Handlers
开发智能事件处理程序
http://developer.yahoo.com/performance/rules.html#events
有时候我们会感觉到页面反应迟钝,这是因为DOM树元素中附加了过多的事件句柄并且些事件句病被频繁地触发。这就是为什么说使用event delegation(事件代理)是一种好方法了。
如果你在一个div中有10个按钮,你只需要在div上附加一次事件句柄就可以了,而不用去为每一个按钮增加一个句柄。事件冒泡时你可以捕捉到事件并判断出是哪个事件发出的。
你同样也不用为了操作DOM树而等待onload事件的发生。你需要做的就是等待树结构中你要访问的元素出现。你也不用等待所有图像都加载完毕。
你可能会希望用DOMContentLoaded事件来代替onload,但是在所有浏览器都支持它之前你可使用YUI 事件应用程序中的onAvailable方法。
YUI Event:
http://developer.yahoo.com/yui/event/
onAvailable:
http://developer.yahoo.com/yui/event/#onavailable
分享到:
相关推荐
### 网站页面性能优化的34条黄金守则--雅虎团队经验分享 #### 知识点一:减少HTTP请求次数 在网站页面性能优化中,减少HTTP请求次数至关重要。据统计,网页加载时间中大约有80%是由于下载组件(如图片、样式表等)...
【网站性能优化的34条黄金守则】是Yahoo! Exceptional Performance团队经过深入研究和实践总结出的一套提升网页速度的方法。这些守则旨在改善用户体验,减少用户等待时间,从而提高网站的效率和吸引力。以下是其中...
网站性能最佳体验的34条黄金守则之JavaScript和CSS优化 #### CSS优化守则 **1. 把样式表置于顶部** - **背景与意义**:这一建议来源于Yahoo!团队对自身网站性能的研究。他们发现在网页加载过程中,如果样式表位于...
Yahoo!的Exceptional Performance团队为改善Web性能带杢最佳实践。他们为此迕行了一系列的实验、开収了各种工具、写了大量...可以分为7大类34条。包括内容、服务器、cookie、CSS、JavaScript、图片、秱劢应用等七部分。
网站性能最佳体验的34条黄金守则”。这些规则涵盖了从页面设计、开发实践到服务器配置的方方面面,是业界公认的性能优化指南。 1. **避免使用CSS表达式**:它们会在每次页面重绘或布局时计算,影响性能。 2. **减少...
网站最佳体验守则是指导网站开发者和管理员提升网站性能和用户体验的一套准则。这些守则旨在通过内容优化和服务器优化来减少加载时间,提高网页的响应速度,从而让网页浏览变得更为流畅。以下将详细阐述这些关键知识...
以上两点是雅虎提出的34条网站性能优化黄金守则中的两个核心方面。通过实施这些策略,不仅可以减少页面加载时间,还可以改善用户体验。接下来的部分将继续介绍其余的优化方法,包括避免跳转、缓存Ajax、推迟加载等...
根据网上分享的 Yahoo 的高性能网站构建的黄金守则,我们可以从以下七个方面来优化页面重构: 1. 尽量减少HTTP请求 用户加载页面时,80%的时间被用于下载页面中的各项内容,包括图片、样式、脚本等。因此,减少HTTP...