想要写出高性能的前端代码,就必须了解到浏览器的工作原理,明白浏览器是怎么加载一个页面的,我们的性能问题就是从这里弹起,至少要知道如何减少http请求,因为这会减少一半甚至更多的http请求。
我们在开发的过程中,需要遵循一些原则,这样才能尽可能的避免我们在开发中遇到的一些坑。
1.编写符合当代浏览器的代码
2.用css来进行布局
3.使用渐进式增强的方法
4.各司其职
浏览器工作原理大概如下:
首先html先被解析为dom树,然后第二颗树是dom树和css样式表结合构成的渲染树,根据这棵渲染树,浏览器就开始显示了,先把你的元素画到屏幕上,从左上到右下结束。其中css和html的解析是同时进行的。
所以你能从以下两个方面改进性能。
1.减少html中元素的数量
2.减少重绘(注意两点,第一:要改动的元素在dom树中越深越好,越深越独立,对其他节点影响越少,第二对dom操作尽可能一次完成)
用css布局,处理边界。不要让盒子依赖与外部,
渐进式增强,使用特征检测来进行渐进式增强。使用特征检测,可以尽可能的使用浏览器自带的功能,这样性能更好,开销更少。我们强烈建议使用特征检测,而不是浏览器版本号检测。因为版本号检测会是一个巨大的负担。
有一个很好的实现功能检测的方式是使用Modernizer的开放源码库。
【高性能html5】在任何时候要尽可能用css完成交互,因为浏览器天生就可以处理他们,这样我们会获得更好的性能。同时css的代码量要比js少很多。
性能准则:
1.减少http请求
2.使用cdn加速
3.避免空 src和href属性值(会产生http请求)
4.增加过期头(最好有一个版本控制机制,其中一个办法就i时在文件名上加入时间戳,比如把一个很通用的css取名为base20120303.css)
5.启GZIP压缩
6.把css放到头部
7.把javaScript放到尾部
8.避免使用css表达式
9.删除不使用的css语句
10.对javaScript、css进行压缩
11.减少重绘
图片精灵可以减少http请求,但是多大的图片精灵分开成小的,这个需要实验。