1.当浏览器在执行javascript代码时,不能同时做其它任何事情。大多数浏览器都使用单一进程来处理用户界面更新和javascript脚本执行。
2.雅虎特别性能小组 http://developer.yahoo.com/performance/
3.<script>标签可以在<head>或<body>中。
4.推荐将所有<script>标签放在body标签的底部
5.减少页面中外链脚本文件的数量将会改善性能。
6.无阻塞的脚本:
a.延迟的脚本,defer
b.动态脚本元素
c.XMLHttpRequest脚本注入
LazyLoad类库,LAVjs,requireJS
7.函数中读写局部变量总是最快的,而读写全局变量通常是最慢的。全局变量总是存在于运行期上下文作用域链的最末端,因此它也是最远的。
8.如果某个跨作用域的值在函数中被引用一次以上,那么就把它存储到局部变量里。
9.避免使用with语句,try-catch中的catch子句也会改变作用域
10.with/catch/使用eval函数的函数,都被认为是动态作用域。
11.嵌套的对象成员会明显影响性能,尽量少用
12.属性或方法在原型链中的位置越深,访问它的速度也越慢
13.可以通过把常用的对象成员、数组元素、跨域变量保存在局部变量中来改善javascript性能,因为访问局部变量访问速度更快。
14.下述情况会发生重排:
添加或删除可见的dom元素
元素位置改变
元素尺寸改变(margin/padding,border-width,width,height等)
内容改变,如文本改变或图片被另一个不同尺寸的图片替代
页面渲染器初始化
浏览器窗口尺寸改变
15.获取布局信息会导致队列刷新,如:
offsetTop/offsetLeft/offsetWidth/offsetHeight
scrollXXX
clientXXX
getComputedStyle函数(IE中是currentStyle)
16.当要对dom元素进行一系列操作时,可以通过以下步骤来减少重绘和重排的次数:
a.使元素脱离文档流
b.对其应用多重改变
c.把元素带回文档中
17.有三种基本方法可使dom脱离文档流:
a.隐藏元素,应用修改,重新显示
b.使用文档片断在当前dom之外构建一个子树,再把它拷贝回文档
c.将原始元素拷贝到一个脱离文档的节点中,修改副本,完成后再替换原始元素
18.文档片断的一个使得的语法特性是当你附加一个片断到节点中时,实际上被添加的是该片断的子结点,而不是片断本身。如:
var fragment = document.createDocumentFragment();
appendDataToElement(fragment,data);
document.getElementById("mylist").appendChild(fragment);
19.使用事件委托减少事件处理器个数
20.动画中使用绝对定位,使用播放代理,使用如下步骤可避免动画过程中的大部分重排:
a.使用绝对位置定位页面上的动画元素,将其脱离文档流
b.让元素动起来。
c.当动画结束时恢复定位
21.在for循环初始化中的var语句会创建一个函数级的变量,而不是循环级。
22.除非明确需要迭代一个属性数量未知的对象,否则应避免使用for-in循环。除了for-in外,其它类型的性能都差不多。
23.通过倒序循环和减少属性查找,可以快50%~60%。
24.达夫设备
25.基于函数的迭代比基于循环的迭代慢8倍。
26.if-else用于判断两个离散值或几人不同的值域;当判断多于两个离散值时,switch语句是更佳选择。
27.在js中,switch语句比较值时使用全等操作,不会发生类型转换。
28.使用定时器让出ui线程
29.js可持续运行的最长时间是100ms。
30.简化版XML格式更为有利,但比那些最快的格式依然慢上一个数量级。在高性能Ajax中,XML没有立足之地。
31.字符串操作是javascript中最慢的部分。
32.通常来说数据格式越轻量级越好,JSON和字符分隔的自定义格式是最好的。如果数据集很大并且对解析时间有要求,那么就从如下两种格式中做出选择:
a.JSON-P数据,使用动态脚本注入获取。它把数据当作可执行javascript而不是字符串,解析速度极快。它能跨域使用,但涉及敏感数据时不应该使用它。
b.字符分隔的自定义格式,使用XHR或动态脚本注入获取,用split解析。这项技术解析大数据集比JSON-P略快,而且通常文件尺寸更小。
33.避免双重求值是实现javascript运行期性能最优化的关键所在。
34.使用object/array直接量
35.Gzip压缩主要适用于文本,其它类型,如图片或PDF,不用使用Gzip压缩,因为它们本身已经被压缩过。
36.把改动过的静态资源重命名可以解决缓存问题
37.ant支持scp和ftp
38.脚本之间存在间隙就说明脚本被阻塞了,使用网络分析工具找出并优化加载资源之间的间隙。
39.使用Fiddler分析网络资源加载
40.YSlow给页面中加载 的外部资源评分,提供页面性能报告,并给出提升加载速度的建议。

JavaScript之 高性能读书笔记相关推荐

  1. 《高性能JavaScript》(读书笔记)

    这次主要是对<高性能JavaScript>一书的读书笔记,记录下自己之前没有注意到或者需要引起重视的地方 第一章 加载和执行 js代码在执行过程中会阻塞浏览器的其他进程,比如用户界面的绘制 ...

  2. 《JavaScript模式》读书笔记一:基本技巧

    <JavaScript模式>的读书笔记,个人向! 更新进度随我的阅读进度 基本技巧 尽量少用全局变量 防止变量污染 注意JS变量提升问题 尽量使用单一var模式,只使用一个var在函数顶部 ...

  3. JavaScript高级程序设计-读书笔记(6)

    第20章 JSON JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量 JSON的语法可以表示一下三种类型的值 l        简单值:使用与JavaScript相同的语法,可以在JS ...

  4. javascript权威指南读书笔记之二——词法结构

    本章讲述的内容,用通俗的语言来说,就是应该注意的地方,这些也许和我们所学的其他语言类似,也许完全不同,比如一开始就介绍说javascript程序中的每个字符都是用两个字节表示的,但有些程序设计者习惯于 ...

  5. JavaScript高级程序设计读书笔记(一)

    第一章 总结: JavaScript是一种专为与网页交互设计的脚本语言. 由三个不同的部分组成: ECMAScript, 由ECMA-262定义,提供核心语言功能: DOM(文件对象模型),提供访问和 ...

  6. 精通javascript、javascript语言精粹读书笔记

    于是选择两本书做最后的冲刺: 精通javascript(jquery之父著作),javascript语言精粹.希望我也能成为一个javascript的好手. Dom Elements的属性 精通jav ...

  7. 《JavaScript 模式》读书笔记

    简介 在软件开发过程中,模式是指一个通用问题的解决方案.一个模式不仅仅是一个可以用来复制粘贴的代码解决方案,更多地是提供了一个更好的实践经验.有用的抽象化表示和解决一类问题的模板. 对象有两大类: 本 ...

  8. javascript高级程序设计读书笔记2

    <!DOCTYPE HTML>//这个网页的文档类型,这个是html5的写法 Bootstrap使用的某些HTML元素和CSS属性需要文档类型为HTML5 doctype.因此这一文档类型 ...

  9. JavaScript 语言精粹读书笔记

    最近在看 赵泽欣 / 鄢学鹍 翻译的 蝴蝶书, 把一些读后感言记录在这里. 主要是把作者的建议跟 ES5/ES5.1/ES6 新添加的功能进行了对比 涉及到的一些定义 IIFE: Immediatel ...

最新文章

  1. 在VMware Workstation上安装Ubuntu 16.04 Server操作系统
  2. 《Python Cookbook 3rd》笔记(2.12):审查清理文本字符串
  3. 确认! Python再次夺冠,老码农:崩溃!
  4. mysql使用navicat(建表前与建表后)添加时间戳(创建时间、自动更新时间)
  5. 明晚直播预告丨Oracle 19c X86下移经验分享
  6. Portworx副总裁Eric Han接受InfoQ采访,介绍超融合容器市场的现状
  7. Linq To Sql, 为何继承就这么费劲?
  8. annotatedClasses和component-scan冲突吗
  9. python的DataFrame排序问题
  10. Java SE书籍推荐
  11. SQL Server 2008/R2数据库安装(步骤详细,截图清晰)
  12. html 登录页面提示信息,登陆界面.html
  13. 到底什么是对象,什么是对象的引用?对象和对象的引用有那些区别?
  14. python截取视频_python使用ffmpeg截取视频段
  15. 涨姿势了,蜻蜓FM源码剖析
  16. MySQL的MDL元数据锁
  17. cs无限僵尸服务器,CS1.6僵尸版
  18. git rebase 与git merge 小结
  19. phpqrcode生成二维码直接输出(不用exit)
  20. 入手评测 外星人M15 R5 怎么样

热门文章

  1. 职高计算机专业内容讲解,对职高计算机专业课程教学创新的探讨
  2. houdini 函数基础
  3. 八、JDBC批量处理sql语句
  4. latex转成mathml_使用MathML或LaTeX和MathJax探索跨浏览器的数学方程
  5. 【华人学者风采】毛景文 中国地质科学院
  6. 计算:[(1*2*4+2*4*8+...+n*2n*4n)/(1*3*9+2*6*18+...+n*3n*9n)]^2的值
  7. C语言中如何输出字符的编码,GB2312中汉字字符的编码在C语言中的输出测试
  8. android 比较符合android构架,优雅的定义全局变量
  9. 《速度与激情9》中有哪些槽点?
  10. AStyle2.02在VS2008下的使用