WEB前端开发高性能优化之JavaScript优化细节
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
作为一名网站开发web前端工程师,对自己开发的网站项目应该尽可能地对其性能进行优化,现在互联网上搜索到的网站性能优化多是翻译转载自 yahoo14条或34条。yahoo的优化建议关注在大的方面,下面,w3c group为大家呈现web前端开发高性能优化部分之javascript的优化细节! 一、避免出现脚本失控 不论什么脚本,在任何时间、任何浏览器上执行,都不应该超过100毫秒。如果实际执行的时间长于这个底限,一定要将进程分解成若干更小的代码段。 脚本失控基本上有以下四个方面的原因: 1. 在循环中执行了太多的操作 解决这个问题的诀窍就是用下面这两个问题来评估每个循环: 如果1和2都可以否定,那么建议使用settimeout方式将循环体切分成小块进行异步处理 将循环中的定义变量及初始化操作放到循环外。参见:http://w3cgroup.com/article.asp?id=111 2. 臃肿的函数体 在javascript中,我们应该尽可能的用局部变量来代替全局变量! 理解javascript作用域链。参见:http://jslab.org.cn/?tag=scopechainandclosure 理解原型链。参见:http://jslab.org.cn/?tag=prototypechain 3. 过多的递归 使用迭代方式替代递归,采用memoization技术优化递归 斐波那契数列的递归算法优化,参见:http://jslab.org.cn/?tag=memoization 4. 过多的dom调用 在web开发中,javascript的一个很重要的作用就是对dom进行操作。可你知道么?对dom的操作是非常昂贵的,因为这会导致浏览器执行回流(reflow)操作。而执行了过多的回流操作,你就会发现自己的网站变得越来越慢了。我们应该尽可能的减少dom操作。 回流操作主要会发生在几种情况下: * 改变窗体大小 解决问题的关键,就是限制通过dom操作所引发回流的次数: 1.在对当前dom进行操作之前,尽可能多的做一些准备工作,保证n次创建,1次写入。 2.在对dom操作之前,把要操作的元素,先从当前dom结构中删除: 3.css部分 4.将获取的dom数据缓存起来。这种方法,对获取那些会触发回流操作的属性(比如offsetwidth等)尤为重要。 5.当对htmlcollection对象进行操作时,应该将访问的次数尽可能的降至最低,最简单的,你可以将length属性缓存在一个本地变量中,这样就能大幅度的提高循环的效率。 二、避免大字符串字面量对象操作,如 字符串.lenth,尽量转换为new string(字符串)后再进行操作 三、在做字符查找替换等操作时善用正则表达式 快速掌握ecmascript正则表达式。参见:http://w3cgroup.com/article.asp?id=202 四、减少语句,利用运算符优先级实现if else表达式,使用三元表达式,使用连续表达式(看情况,将损失程序可读性) 利用运算符优先级实现if else表达式参见:http://w3cgroup.com/article.asp?id=131 五、将css,js文件合并到一个文件(非bt爱好者还是不要玩了^_^) 参见:http://w3cgroup.com/article.asp?id=29 六、避免javascript事件绑定出现内存泄漏 “these memory leaks often occur as a result of circular references between javascript objects and objects within ie’s dom (document object model).” microsoft gpde team blog 参见:http://w3cgroup.com/article.asp?id=207 七、使用web workers技术(支持html5的浏览器) web workers为javascript提供了一种能在后台进程中运行的方法,web workers进程能够在不影响用户界面的情况下处理任务。 参见:http://w3cgroup.com/article.asp?id=242 八、y!14条(14 rules for faster-loading web sites) * rule 1 – make fewer http requests 参见:http://w3cgroup.com/article.asp?id=97 九、微软早期的dhtml优化建议 * 使用数组push替代字符串累加 原文:http://w3cgroup.com/article.asp?id=255 该文章在 2010/4/27 2:10:18 编辑过 |
关键字查询
相关文章
正在查询... |