- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高性能web开发一些建议
作为一名网站开发WEB前端工程师,对自己开发的网站项目应该尽可能地对其性能进行优化,现在互联网上有哪些信誉好的足球投注网站到的网站性能优化多是翻译转载自 Yahoo14条或34条。Yahoo的优化建议关注在大的方面,下面,W3C Group为大家呈现WEB前端开发高性能优化部分之JavaScript的优化细节! 一、避免出现脚本失控 不论什么脚本,在任何时间、任何浏览器上执行,都不应该超过100毫秒。如果实际执行的时间长于这个底限,一定要将进程分解成若干更小的代码段。 脚本失控基本上有以下四个方面的原因: 1. 在循环中执行了太多的操作 ? ? 解决这个问题的诀窍就是用下面这两个问题来评估每个循环: ? ? 1. 这个循环必须要同步执行么? ? ? 2. 循环里面的数据,必须要按顺序执行么? ? ? 如果1和2都可以否定,那么建议使用setTimeout方式将循环体切分成小块进行异步处理 ? ? 将循环中的定义变量及初始化操作放到循环外。参见:/article.asp?id=111 2. 臃肿的函数体 ? ? 在JavaScript中,我们应该尽可能的用局部变量来代替全局变量! ? ? 理解JavaScript作用域链。参见:/?tag=ScopeChainAndClosure ? ? 理解原型链。参见:/?tag=prototypeChain 3. 过多的递归 ? ? 使用迭代方式替代递归,采用memoization技术优化递归 ? ? 斐波那契数列的递归算法优化,参见:/?tag=Memoization 4. 过多的DOM调用 ? ? 在Web开发中,JavaScript的一个很重要的作用就是对DOM进行操作。可你知道么?对DOM的操作是非常昂贵的,因为这会导致浏览器执行回流 (reflow)操作。而执行了过多的回流操作,你就会发现自己的网站变得越来越慢了。我们应该尽可能的减少DOM操作。 ? ? 回流操作主要会发生在几种情况下: ? ? ? ? * 改变窗体大小 ? ? ? ? * 更改字体 ? ? ? ? * 添加移除stylesheet块 ? ? ? ? * 内容改变哪怕是输入框输入文字 ? ? ? ? * CSS虚类被触发如 :hover ? ? ? ? * 更改元素的className ? ? ? ? * 当对DOM节点执行新增或者删除操作或内容更改时。 ? ? ? ? * 动态设置一个style样式时(比如element.style.width=10px)。 ? ? ? ? * 当获取一个必须经过计算的尺寸值时,比如访问offsetWidth、clientHeight或者其他需要经过计算的CSS值(在兼容DOM的浏览器 中,可以通过getComputedStyle函数获取;在IE中,可以通过currentStyle属性获取)。 ? ? 解决问题的关键,就是限制通过DOM操作所引发回流的次数: ? ? ? ? 1.在对当前DOM进行操作之前,尽可能多的做一些准备工作,保证N次创建,1次写入。 ? ? ? ? 2.在对DOM操作之前,把要操作的元素,先从当前DOM结构中删除: ? ? ? ? ? ? 1. 通过removeChild()或者replaceChild()实现真正意义上的删除。 ? ? ? ? ? ? 2. 设置该元素的display样式为“none”。 ? ? ? ? ? ? 修改操作完成后,将上面这个过程反转过来,建议使用第2种方式。 ? ? ? ? 3.CSS部分 ? ? ? ? ? ? 另外一个经常引起回流操作的情况是通过style属性对元素的外观进行修改,如element.style.backgroundColor = blue; ? ? ? ? ? ? 每次修改元素的style属性,都肯定会触发回流操作,要解决这个问题可以: ? ? ? ? ? ? 1.使用更改className的方式替换style.xxx=xxx的方式。 ? ? ? ? ? ? 2.使用style.cssText = ;一次写入样式。 ? ? ? ? ? ? 3. 避免设置过多的行内样式 ? ? ? ? ? ? 4. 添加的结构外元素尽量设置它们的位置为fixed或absolute ? ? ? ? ? ? 5. 避免使用表格来布局 ? ? ? ? ? ? 6. 避免在CSS中使用JavaScript expressions(IE only) ? ? ? ? 4.将获取的DOM数据缓存起来。这种方法,对获取那些会触发回流操作的属性(比如offsetWidth等)尤为重要。 ? ? ? ? 5.当对HTMLC
文档评论(0)