(1) 性能优化的方法?
1.减少http请求数量和体积
-压缩 css、js 文件
-合并 js、css 文件,减少 http 请求
-使用CSS Sprites图,合并多个CSS图片,合理使用图片压缩
-合理使用http缓存,减少http请求
-使用外部的css和js以减少服务器的压力
2.css和script的位置
把 css 样式引入放在<head>标签中,把 <script>资源引入放在</body>闭合之前。
外链脚本在加载时却常常阻塞其他资源,例如在脚本加载完成之前,它后面的图片、样式以及其他脚本都处于阻塞状态,直到脚本加载完成后才会开始加载。如果将脚本放在比较靠前的位置,则会影响整个页面的加载速度从而影响用户体验。所以说尽可能的将脚本往后挪,减少对并发下载的影响
3.DOM操作优化
-要避免在document上直接进行频繁的DOM操作(用innerHTML代替DOM操作),缓存DOM节点查找的结果
-使用classname代替大量的内联样式修改
-对于复杂的UI元素,设置position为absolute或fixed
-在js动画和css动画之间尽量使用css动画
-适当使用canvas
-使用事件代理
-避免使用eval或Function,每次 eval 或 Function 构造函数作用于字符串表示的源代码时,脚本引擎都需要将源代码转换成可执行代码,这是很消耗资源的操作
-避免大量的字符串拼接,可以使用数组的join方法
4.CSS选择符优化
-避免使用通配符选择器,避免使用后代选择器
-选择器匹配是从右向左匹配的,选择器语句链越短,浏览器的匹配速度越快
-避免使用标签和通用选择器作为关键选择器,因为它们会匹配大量的元素,浏览器必须要进行大量的工作
-搞清楚哪些 CSS 属性会触发重新布局(reflow)、重绘(repaint)。在写样式时,避免触发重新布局的可能
-减少使用昂贵的属性,所有需要浏览器进行操作或计算的属性相对而言都需要花费更大的代价。box-shadow/border-radius/filter/透明度/:nth-child等
-不要使用@import
-尽量减少css表达式的使用 background-color: expression((new Date()).getHours()%2?"#FFFFFF": "#000000" );