从客户端着手
- 压缩代码(js/css),压缩图片
- 合并一些小图片(css,sprite),使用雪碧图
- 若是打包的代码尽可能切割成多个chunk,减少单一chunk过大
- HTTP的缓存头使用合理
- 减少第三方库依赖
- 对代码应该考虑性来编写,比如使用requsetAnimationFrame绘制动画,尽可能减少页面重绘(Dom改变)
- 渐进升级,引入preload这些预加载资源
- 看情况用 service worker来缓存资源
从服务端着手
- 宽带,域名解析,多域名解析
- 页面做服务端渲染,减少对浏览器的依赖(不用客户端解析)
- 渐进升级,比如引入HTTP2(多路复用,头部压缩这些可以民概念家快加载速度)
vue项目优化
代码层面
- v-if和v-show区分使用场景
- computed和wath区分使用场景
- v-for遍历必须为item添加key,切避免同时使用v-if
- 长列表性能优化
- 销毁事件
- 图片资源懒加载
- 路由懒加载
- 第三方插件的按需引入
- 优化无线列表性能
- 服务端渲染SSR or预渲染
webpack层面的优化
- webpack对图片进行压缩
- 减少ES6转为ES5的冗余代码
- 提取公共样式
- 模版预编译
- 提取组件的css
- 优化SourceMap
- 构建结果输出分析
- Vue项目的编译优化
基础的Web技术的优化
- 开启gzip压缩
- 浏览器缓存
- CDN的使用
- 使用Chrome Performance查找性能瓶颈