高性能JavaScript 读书笔记
第一章:加载和执行
- 浏览器的JavaScript的引擎是编译器层的优化;
- 当浏览器执行JavaScript代码时,不能同时做其他任何事情(单一进程),意味着<script>标签每次出现都霸道地让页面等带脚本的解析和执行(每个文件必须等到前一个文件下载并执行完成才会开始下载),所以头部的JS和CSS用来渲染页面,交互行为(几乎所有)的JS放在<body>底部;
- 主流浏览器都允许并行下载JS。
- 减少外链脚本数量将会改善性能(合并JS)
- 任何网站都可以使用一个把制定文件合并处理后的URL来获取任意数量的文件。
- defer属性可延迟脚本(只有IE4 和FF3.5 支持)
第二章:数据访问
- JavaScript中有四种基本的数据存取位置: 直接量,变量,数组元素(以数字作为索引),对象成员(以字符床作为索引)。
- 访问直接量和局部变量的速度最快,相反,访问数组元素和对象成员相对较慢。
- 属性或方法在原型链中的位置越深,访问它的速度也越慢。
- 通常来说,可以通过吧常用的对象,数组元素,跨越变量保存在局部变量中来改善JavaScript性能。
第三章:DOM编程
- DOM操作在webkit内核的浏览器速度快,其他的浏览器innerHTML执行快。
- 访问和操作DOM是现代WEB应用的重要部分。但每次穿越链接ECMAScript和DOM两个岛屿之间的桥梁都会被收取‘过桥费’.
- 要留意重回和重排。
- 在IE中:hover会降低响应速度。
第四章:算法和流程控制
- 避免使用for-in循环,除非需要遍历一个属性数量位置的对象。
- 了解栈溢出错误。
第五章:字符串和正则表达式
- 回溯既是正则表达式匹配功能的基本组成部分,也是正则表达式的低效之源。
第六章:快速响应的用户界面
- 任何JavaScript任务都不应当执行超过100毫秒。
- Web workers是新版浏览器支持的特性。
- 没有什么JavaScript代码会重要到可以影响用户体验的程度.
第七章:Ajax
- JSON是轻量级的数据格式,解析速度快。
- 减少请求数,可通过合并JS和CSS,还有IMG。
- 缩短页面加载时间,页面主要内容加载完成后,用Ajax获取那些次要的文件。
第八章:编程实践
- 大多数的时候,没必要使用eval()和Function(),因此最好避免使用它们。至于setTimeout()和setInterval(),建议传入函数而不是字符串来作为第一个参数。
- 在JavaScript中创建对象和数组的方法有多种,但使用对象和数组直接量是最快的方式(对象属性和数组项越多,使用直接量的好处就越明显)。
- 不要重复工作:延迟加载;条件预加载.
- 多使用原生方法,因为更快。
第九章:构建并部署高性能JavaScript应用
- PV(page view)即页面浏览量或点击量。
- 减少页面渲染所需的HTTP请求数,特别是针对那些首次访问网站的用户。
- JavaScript压缩。
- JavaScript缓存。
- 使用内容分发网络(CDN)
第十章主要介绍工具:如firebug,YSlow,和一些性能分析.
转载于:https://www.cnblogs.com/liangle/archive/2011/07/22/2512673.html
高性能JavaScript 读书笔记相关推荐
- 高性能javascript读书笔记(三.DOM 编程2)
重绘和重排版 浏览器下载完所有的HTML标记,Javascript,CSS,图片之后,它解析文件并创建两个内部数据结构 DOM树 表示页面结构 渲染树 表示DOM节点如何显示 渲染树中为每个需要显示的 ...
- 你不知道的javascript读书笔记3
概述 这是我看<你不知道的JavaScript(中卷)>中关于类型检查的笔记,供以后开发时参考,相信对其他人也有用. typeof 我们知道js中有七种内置类型:undefined, nu ...
- javascript --- [读书笔记] 回流与重绘 前端优化小结
1. 浏览器渲染原理 请说出: 从用户在浏览器地址输入网址,到看整个页面,中间都发生了哪些事情? HTTP请求阶段 HTTP响应阶段 浏览器渲染阶段 1.1 可能用到的知识 1.1.1 进程 Proc ...
- 高性能MySQL读书笔记 (五)
1. 优化服务器设置 MySQL有大量的可以修改的参数,但不应该随便修改.应该将更多时间花在schema的优化,索引,查询设计上 配置文件路径: 通常在/etc/my.cnf 不建议动态修改变量,因为 ...
- 你不知道的javaScript读书笔记(六)
this全面解析 笔记: this的运行机制: (1) this是在运行时绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件.this的绑定和函数声明的位置没有任何关系,只取决于函数的调 ...
- JavaScript读书笔记-03
数据类型 JavaScript是弱类型的编程语言,字符串变量保存了一个字符串,稍后又将它当做数值是可以的, Var myVar = "hello"; myVar = 123; my ...
- Javascript读书笔记(六)函数作用域,声明提前,作用域链,闭包
参照内容来自<JavaScript权威指南>,<JavaScript高级程序设计> 函数作用域 类似C语言的编程语言中有块级作用域,JavaScript中没有块级作用域,取而代 ...
- JavaScript读书笔记(三)布尔值,null,undefined,全局对象,包装对象
参照内容来自<JavaScript权威指南> 布尔值 任意JavaScript的值都可以转换为布尔值. 部分值会被转换为false,其他转换为true. 会被转换为false的有:(1)u ...
- HeadFirst JavaScript读书笔记
1. 存储数据--HeadFirst JavaScript第二章 2. 探索客户端--HeadFirst JavaScript第三章
最新文章
- R语言ggplot2可视化:组合箱图(boxplot)和直方图(histogram)输出组合可视化结果
- pyqt 槽任意参数_PyQt5快速入门(二)PyQt5信号槽机制
- C#访问SQLServer增删改查代码实例
- 一文了解YOLO-v4目标检测
- 大数据之路- Hadoop环境搭建(Linux)
- 《移动应用开发》实验报告——疫情地图
- CentOS7 64位下MySQL5.7安装与配置(YUM)
- c语言小饭店等位就餐程序,C语言程序设计 C语言程序设计 3.C语言程序设计教案全部.doc...
- tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
- C#设计模式之7-桥接模式
- 一个堆排我竟弄了 4 个动画
- (原創) 如何在Ubuntu上啟動ADSL連線? (OS) (Linux) (Ubuntu)
- 通过批处理来运行python程序
- Python实践基于直方图的梯度提升集成方法
- 软考项目管理师考试随笔
- springboot如何快速访问templates下的html
- rapidxml 给节点赋值时出现乱码问题
- 艾艾贴常用的数据类型转换
- 88E1111 100BASE-T百兆工程(part2--完)
- Petya and Countryside
热门文章
- CF-778 C.Peterson Polyglot (Trie合并)
- python3创建一个游戏窗口
- go语言1.4版本将支持面向android开发,[翻译]Go语言1.4版本将支持面向Android开发
- Linux下C++访问MySQL数据库
- 4.3 欠拟合与过拟合
- [攻防世界 pwn]——pwn-100
- css宋体代码_前端开发必备的CSS命名规范与常用CSS代码集合
- c++ static allocator
- 深入了解DefaultMessageListenerContainer
- c# thread 编程