Javascritp代码性能优化
1 代码性能测试 : 简单方法 根据运行前后的时间来判断
|
|
综合来看,递归这种方法还是十分消耗性能的
2 浏览器开发者工具提供性能分析
开发者工具—-profiles —-Record Javascript CPU Profile
3 javascript性能优化
async | 设置或返回是否脚本一旦可用,就应异步执行。 |
---|---|
charset | 设置或返回脚本的 charset 属性值。 |
cross Origin | 设置或返回脚本的 CORS 设置。 |
defer | 设置或返回当页面完成解析后是否执行脚本。 |
src | 设置或返回脚本的 src 属性值。 |
text | 设置或返回属于脚本子节点的所有文本节点的内容。 |
type | 设置或返回脚本的 type 属性值。 |
当浏览器解析页面的时候,遇到了javascript代码,无论该代码是在内嵌式文件中还是在外链式文件中,页面的加载和渲染都必须停止下来等待脚本执行完毕,因为脚本可能改变页面或者javascript的命名空间;
改善性能的方法:
3.1 为了不影响页面的渲染,尽量将script标签放在body的底部
3.2 每个script标签在加载的时候,都会阻塞页面渲染,所以减少页面包含的script标签数量有助于改善这一情况;包括减少内嵌式或者外链式的script标签;async 属性规定一旦脚本可用,则会异步执行。类似于告诉浏览器链接进来的脚本不糊生成文档内容,因此浏览器可以在下载脚本的时候继续解析和渲染文档;
注释:async 属性仅适用于外部脚本(只有在使用 src 属性时)。
注释:有多种执行外部脚本的方法:
- 如果 async=”async”:脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)
- 如果不使用 async 且 defer=”defer”:脚本将在页面完成解析时执行
- 如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本
3.3 动态创建脚本
文档对象模型允许我们使用javascript动态创建HTML的几乎全部文档内容,script标签和页面中的其他元素一样,很容易被创建;
|
|
|
|
|
|
如果想要实现兼容,我们需要封装一个代码
|
|
3.4 通过对XHR发送请求,加载javascript脚本
|
|
4 内存管理
虽然javascript具有垃圾回收机制,但是为了让页面具有更好地性能,还是需要进行内存的优化;对于局部变量,在其执行完毕之后,会被自动清除(闭包除外),但是对于全局变量以及全局的函数,如果数据不再使用,最好通过设置为null的形式进行手动接触占用