https://segmentfault.com/a/1190000000490324
- 优化循环
- 垃圾回收
*1。 将不用的对象赋值为空。(null)
*2. 全局对象 将一些常用对象永久保存起来。作为全局对象
*3. 事件监听器的回收
*4. 定时器的回收。(干脆就放一个全局的定时器,项目启动后就一直在跑)
*5. 闭包导致的内存泄露 (闭包是不会造成内存泄漏的。但是,闭包会造成对象引用的生命周期脱离当前函数的上下文)(有待研究)
3.对象的优化
*1. JavaScript获取数据的性能有如下顺序(从快到慢)
变量获取 > 数组下标获取(对象的整数索引获取) > 对象属性获取(对象非整数索引获取)
*2. 对象的拷贝
for(item in source) 的效率非常低
4.对象池
5.线程
6.缓存
*1. http请求数据的缓存,避免同样的数据重复去请求。
*2. 本地缓存 sessionStorage localStorage
*3. 应用资源的缓存。 Application Cache
<html manifest="manifest.appcache">
js文件的优化
*1. 文件的压缩
压缩主要是删除 JS 代码中注释、换行符、空格等,从而压缩 JS 文件大小。
工具打包之后基本上都经过了压缩。但是要注意代码的规范。如果使用代码混淆的话会将方法名和变量名赋值为a,b,c这样的一个单词,会减少文件的长度。我们现在用的工具一般只压缩不混淆。如果要混淆需要自己找工具去处理
*2. 文件的合并 将多个js文件合并成一个文件。减少网络请求的此时。但是主要要是在同一模块下的。
同样的图片和声音也可以做这样的合并处理。
Angular2 项目的优化
Aot编译, 摇树优化 (treeshaking) 懒加载。
--prod 代表生产环境编译,带有代码混淆与压缩功能。我这实际测试时候,默认编译包大小为3.5兆,生产包1.7兆。
--aot 代表预编译,会显著缩短客户端浏览器的启动到展示出真正页面的时间。
缓存接口的数据。
转场动画
服务器的Gzip压缩。
对象的赋值
对象引用赋值后,如果将对象置空,相互间是不受影响的。