web端 性能优化

图片处理

压缩

  • tinypng,质量很高的在线图片压缩网站,推荐
  • 智图,本地图片压缩软件
  • image-webpack-loader,webpack打包loader,不太推荐打包的时候再处理图片,很影响打包速度。

合并(css雪碧图)

将网站上用到的图片合并到一个图片里

base64

将一些小图片做出小图片,直接嵌再html中,减少请求,但图片转成base64以后会增大体积,大概1/3的样子,酌情使用。

懒加载

图片进入可视区域之后再请求资源

css

一般来说css也就是合并多个文件,然后压缩,还有就是可以将css做出放在head标签里(一般通过打包工具处理)

js

基本也是压缩合并的处理

defer 和 async

有些特殊的脚本可以使用延迟加载或者异步加载,如埋点,统计脚本等

预加载 preload 和 prefetch

可以将之后页面可能会用到的资源再浏览器空闲时间预加载回来,并缓存到本地,不仅仅是可以处理js,其他的资源也可以在合适的尝试使用这个特性

缓存

由于web的机制,资源基本都是靠网络加载回来,上面的那些优化手段都是通过减少http请求,或者合适的时机再做请求,从这个方面考虑,如果把请求的省了,岂不是更快。当然还得考虑资源的更新问题,所以合适的缓存策略很重要。
一般来说静态资源最好做强缓存,用不更新,更新的时候给资源起不同名字,一般的打包工具webpack/grunt/gulp都有类似hash的命名,文件名用hash值做标记
html文件最好不做缓存,这样就不会影响网站内容的更新。
关于如何做缓存,参考缓存详解
当然还可以使用Service Worker,html的storage api做缓存。