前端全链路性能优化

本文详细探讨了前端性能优化的各种策略,包括静态资源优化(如图片、HTML、CSS和JS)、页面渲染架构设计、原生APP优化、服务端和网络优化、研发流程优化以及全链路质量监控体系的建设。重点讲解了如何通过图片格式选择、DOM优化、CSS和JS性能提升、减少回流重绘、接口和缓存优化等方面来提升网页加载速度和用户体验。
摘要由CSDN通过智能技术生成

一、静态资源优化

1、图片的优化

1.1 图片格式及应用场景

  • jpeg

        是一种针对彩色照片而广泛使用的有损压缩图形格式。

        应用于存储和传输照片。

        不适合:线条图形和文字、图标图形,不支持透明度。

        适合 :颜色丰富的照片、彩色图、通栏banner图;结构不规则的图形。

        压缩:

npm i -g jpegtran

jpegtran -copy none -optimize -outfile out.jpg in.jpg

      

  • png

        一种无损压缩的位图图形格式,支持索引、灰度、RGB三种颜色方案以及Alpha通道等特性。

        最高支持24位彩色图像(PNG-24)和8位灰度图像(PNG-8)

        不适合:由于是无损存储,彩色图像体积太大,所以不适合

        适合:纯色、透明、线条绘图,图标;边缘清晰、有大块相同颜色区域;颜色数较少但需要半透明。

压缩:

npm i node-pngqueant-native

  • GIF

        一种位图图形文件格式,以8位色(256中颜色)重现真彩色的图片,采用LZW压缩算法进行编码。仅支持完全透明和完全不透明;如果需要比较通用的动画,gif是唯一的选择。

        不适合:每个像素只有8比特,不适合存储彩色图片。

        适合:动画、图标。

        压缩: gifsicle

  • webp

1.2 如何让图片加载更快?

1.3 在服务器端进行图片自动优化的原理

1.4 真的需要图片么?

  • web Font 代替图片
  • 使用Data URI代替图片
  • 采用Image spriting(雪碧图)

2、精简HTML的代码结构

  • 减少HTML的嵌套
  • 减少DOM节点数
  • 减少无语义代码(比如 <div class='clear'></div>清除浮动)
  • 删除HTTP或者HTTPS,如果URL的协议头和当前页面的协议头一致的,或者此URL在多个协议头都是可用的,则可以考虑删除协议头
  • 删除多余的空格、换行符、缩进、不必要的注释
  • 省略冗余标签和属性
  • 使用相对路径的URL
  • 文件放在合适位置

     css样式链接放在页面头部

css加载不会阻塞DOM解析,但会阻塞DOM tree渲染,也会阻塞后面JS执行。任何body元素之前,可以确保在文档部分中解析了所有css样式(内联和外联),从而减少了浏览器必须重排文档的次数。如果放在页面底部,就会等待最后一个css文件下载完,此时会出现‘白屏’。

JS放在HTML底部

防止js的加载、解析、执行对阻塞页面后续元素的渲染。

  • 增强用户体验

设置favicon.ico 

如果不设置网站控制台会报错,页面加载过程中也没有图标loading的过程,同时也不利于记忆网站的品牌。

增加首屏必要的css和JS

3、CSS的优化遵循的规则

3.1 提升CSS渲染性能

  • 谨慎使用expensive属性

如 nth-child 伪类 position:fiexd等

  • 尽量减少样式层级数
  • 尽量避免使用占用过多CPU和内存的属性

如 text-indent:-99999px

  • 尽量避免使用耗电量大的属性

如css3 3D transforms \css3 transitions/opacity

3.2 合理使用css选择器

  • 尽量避免css表达式
  • 尽量避免使用通配符选择器
  • 尽量避免类正则的属性选择器 ^= $= |= 

3.3 提升css文件加载性能

  • 使用外链的css
  • 尽量避免使用@import

3.4 精简css代码

  • 使用缩写语句
  • 删除不必要的0
  • 删除不必要的单位 如px
  • 删除过多的分号
  • 删除空格和注释
  • 尽量减少样式表的大小

3.5 合理使用web fonts

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值