网络方面
减少http请求:主要是优化js、css和图片资源三个方面,因为html是没有办法避免的。a)合并js文件b)合并css文件c)雪碧图的使用d)使用base64表示简单的图片
缓存:可以通过以下方面来描述:
a)DNS缓存
b)CDN部署与缓存
c)http缓存由于浏览器会在DNS解析步骤中消耗一定的时间,所以,对于一些高访问量网站来说,做好DNS的缓存工作,就会一定程度上提升网站效率。CDN缓存,CDN作为静态资源文件的分发网络,本身就已经提升了,网站静态资源的获取速度,加快网站的加载速度,同时也给静态资源做好缓存工作,有效的利用已缓存的静态资源,加快获取速度。http缓存,也是给资源设定缓存时间,防止在有效的缓存时间内对资源进行重复的下载,从而提升整体网页的加载速度。
DOM操作方面
优化网页渲染:
css的文件放在头部,js文件放在尾部或者异步
尽量避免內联样式
DOM操作优化:
避免在document上直接进行频繁的DOM操作
使用classname代替大量的内联样式修改
尽量使用css动画
前面两个操作,其实都是希望减少回流和重绘, 尽量使用css动画,是因为本身css动画比较简单,而且相较于js的复杂动画,浏览器本身对其进行了优化,使用上面不会出现卡顿等问题
数据方面
图片加载处理:a)图片预加载b)图片懒加载
预加载就是提前加载内容。而图片的预加载往往会被用在图片资源比较大,即时加载时会导致很长的等待过程时,才会被使用的。常见场景:图片漫画展示时。往往会预加载一张到两张的图片。「图片懒加载」首先,我们需要明白一个道理:往往只有看到的资源是必须的,其他资源是可以随着用户的滚动,随即显示的。所以,特别是对于图片资源特别多的网站来说,做好图片的懒加载是可以大大提升网页的载入速度的。
异步请求的优化:
使用正常的json数据格式进行交互
部分常用数据的缓存
数据埋点和统计
「JSON交互」,JSON的数据格式轻巧,结构简单,往往可以大大优化前后端的数据通信。「常用数据的缓存」,可以将一些用户的基本信息等常用的信息做一个缓存,这样可以保证ajax请求的减少。同时,HTML5新增的storage的内容,也不用怕cookie暴露,引起的信息泄漏问题。「数据埋点和统计」,对于资深的程序员来说(臣妾做不到),比较了解,而且目前的大部分公司也会做这方面的处理。