2.减少重绘与重排:重排指改变元素尺寸导致浏览器重新渲染元素的行为,重绘指改变了外观显示属性如:颜色。具体可以查看阮一峰博客。
3.使用体积小可缓存的favicon.ico
4.获取数据使用get请求,get请求可缓存。且只有请求体,参数在地址中,post有请求体和data,数据包多。
5.减小cookie体积,去掉无用cookie。
6.删除项目中无用的脚本文件。
7.避免图片标签有空src,虽然为空,依然会发送http请求。
8.压缩脚本体积,利用构建工具,webpack、gulp等。
9.启用Gzip,发送包含申请压缩的请求头。
10.延迟加载和预加载。如图片懒加载是预加载,非首屏使用的资源可以在完全加载后进行预加载。
11.减少dom数量。
12.不要使用filter,不使用css表达式,使用link代替import,样式表放在head标签内。 13.使用cdn存放前端资源。
14.使用事件委托去绑定事件。
15.js脚本放在页面底部。
一些实际的琐碎点:
使用一些UI框架时候,支持局部引入的,优先局部引入。插件可通过cdn链接引入,配置webpack的externals减小打包体积。非首屏需要的样式文件与JS可以动态创建标签加载或者异步加载(defer与async)。
JS写法中,当对象层级较多时,可以定义临时变量保存要操作的节点,层级越深,JS引擎在运行时候解释代码花费的时间越多。少使用for in循环,for in会查找原型链上可遍历的属性。在for循环内部,计算出终止点的条件,避免每次开始去计算一次。
CSS写法中,避免使用类选择层级过多的写法,由于css解释是从右到左的,会优先匹配到最右的标签。避免使用计算属性,减少使用昂贵属性,如:filter,box-shadow,border-radius,渐变等。