前端性能优化总结(全

图片优化

  1. 小图可以用雪碧图,精灵图
  2. 低于5K 的图片可以转换成 base64 内嵌,减少请求
  3. 合适格式,非透明用jpg,非苹果端用webp,可以用字体图标或svg矢量图
  4. 保真的情况下优化图片
  5. 不要在html缩放图片,设置图片的宽和高,以免浏览器按照[猜]的宽高给图片保留的区域和实际宽高差异,产生重绘。
  6. 使用体积小、可缓存的发Vicon.ico,存在 (避免404);尽量小,最好小于 1K;设置较长的过期时间。对于较新的浏览器,可以使用PNG格式的fawicon
  7. 图片懒加载,预加载
  8. cdn静态文件托管,延长静态缓存时间
  9. 为图片标明高度宽度,减少浏览器计算

页面结构

html

  1. 预加载->预解析dns meta a 标签中设置,并行下载,不会堵塞页面染,可以缩短资源加载时间
  2. css 文件
  3. 减少dom数量,避免不必要的节点或嵌套;语义化标签有利于 SEO 与浏览器的解析时间
  4. 避免减少使用 table 进行布局
  5. 减少iframe使用
  6. 避免404 比如外链的css、js文件出现问题返回404时,会破坏浏览器的并行加载。
  7. 将CSS和JS放到外部文件中 可以缓存文件

css

  1. 减少重排重绘
  2. css选择器嵌套少,少使用通配符和属性选择器,使用id选择器
  3. 不要放太多的base64在css,因为图片转换成base64也挺大的
  4. css 文件不大可以做成样式内联
  5. 不要使用css表达式使用 替代原生 @import
  6. 不要使用滤镜filter 问题很多增加内存开支
  7. 压缩css
  8. 不要滥用web字体,他要下载解析重绘当前页面

js

  1. 压缩js 减少http请求
  2. 减少dom操作,用变量缓存,多次合并成一次
  3. 移除重复代码
  4. 使用事件委托,避免大量的事件绑定
  5. 减少循环次数;减少遍历;完成目的后马上结束循环
  6. 数据读取,在局部作用域进行变量缓存;避免嵌套过深,数据扁平化
  7. 使用GET来完成AJAX请求:浏览器中的POST方法是一个”两步走”的过程:首先发送文件头,然后才发送数据。因此使用GET获取数据时更加有意义
  8. 合理使用 rquestAnimationFrame 动画代替 setTimeout。

网络资源优化(服务器

  1. 静态资源cdn缓存
  2. Gzip压缩 删除多余代码: tree-shaking UglifyJs code-spliting
  3. 正确设置 http缓存
    1. 强缓存
      1. 强缓存(也称本地缓存,状态码200),本地缓存是最快速的一种缓存方式,只要资源还在缓存有效期内,浏览器就会直接在本地读取,不会请求服务端。只有在地址栏或收藏夹输入网址、通过链接引用资源等情况下,浏览器才会启用 强缓存。
    2. 协商缓存
      1. 协商缓存(也称304缓存,状态码304),顾名思义是经过浏览器与服务器之间协商过之后,在决定是否读取本地缓存,如果服务器通知浏览器可以读取本地缓存,会返回304状态码,并且协商过程很简单,只会发送头信息,不会发送响应体。
  4. 避免src href为空
  5. 除去不要的cookies设置过期时间,减少cookies的大小因为每个请求都得带着他跑使用无cookie的域,比如CSS、is、图片等,客户端请求静态文件的时候,减少了 Cookie 的反复传输对主域名的影响
  6. 升级到http2 多路复用
    1. 多路复用,无需多个TCP连接,因为其允许在单一的HTTP2连接上发起多重请求,因此可以不用依赖建立多个TCP连接。
  7. ssr服务端渲染,按需加载
  8. 多域名分发划分内容到不同域名

用户体验

  1. 加loading效果,减少对白屏的感知
  2. 加过度动画,能有效减少用户对卡顿的感知;-轮播图、导航栏、弹窗
  3. 动画数尽量保证在 30 以上,低数、卡顿的动画宁愿不要;
  4. 记住用户使用习惯--记住用户的输入信息,本地存储实现,如果用户开启了隐身模式,本地存储将会被禁掉,可以改用cookiesG避免页面闪动--可以把样式内联,因为他是和DOM一起出来的。
  5. 执行时间避免超过100ms,超过的话就需要做:寻找可缓存 的点;任务的分割异步 或 webworker 执行;

vue2项目优化

  1. v-if 和v-show 区分使用场景
  2. computed 和 watch 区分使用场景
  3. v-for 遍历必须为item 添加 key,且避免同时使用 v-if
  4. 长列表性能优化
  5. 事件的销毁
  6. 图片资源懒加载
  7. 路由懒加载
  8. 第三方插件的按需引入优化无限列表性能
  9. 服务端渲染SSR or 预渲染

Webpack层面的优化

  1. Webpack对图片进行压缩
  2. 减少ES6转为ES5的余代码
  3. 提取公共代码
  4. 模板预编译
  5. 提取组件的CSS
  6. 优化 SourceMap
  7. 构建结果输出分析
  8. Vue项目的编译优化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值