美文网首页
前端性能优化-资源优化

前端性能优化-资源优化

作者: 一代码农1970 | 来源:发表于2021-07-02 15:42 被阅读0次

    一、资源的压缩与合并

    1.为什么要压缩和合并
    减少http请求数量
    减少请求资源大小

    2.HTML压缩
    使用在线工具进行压缩
    使用html-minifier等npm工具

    3.CSS压缩
    使用在线工具压缩
    使用clean-css等npm工具
    webpack配置

    4.JS压缩和混淆
    使用在线工具压缩
    webpack有关配置

    5.CSS、JS文件合并
    若是若干个小文件,可以考虑合并
    无冲突,服务相同的模块,建议合并
    有利于首屏呈现的优先加载,其他的延迟加载 不建议合并

    二、图片优化

    1.图片格式优化
    (一)JPEG/JPG
    优点:很好的压缩比,画质也可以被很好的保存
    使用场景:展示较大的图片并较好的保存画质,比如首页的轮播图
    缺点:由于压缩比较高,若是比较追求纹理和边缘那就不太合适,比如说logo就不太会用JPG
    压缩工具:github–imagemin

    (二)PNG
    优点:相对于JPG来说,能更好的处理纹理和边缘
    使用场景:logo,图标等小图片
    缺点:由于注重纹理等,体积会比较大,色彩与JPG不相上下
    压缩工具:imagemin–pngquant

    (三)SVG
    优点:svg是矢量图形,改变大小不会失真
    缺点:兼容性相对较差
    使用场景:制作思维脑图等

    2.图片加载优化
    (一)图片懒加载
    原理:一张图片就是一个img标签,浏览器是否发起请求图片是根据img的src属性,所以实现懒加载的关键就是,在图片没有进入可视区域时,先不给img的src赋值,这样浏览器就不会发送请求了,等到图片进入可视区域再给src赋值。

    原生的图片懒加载方案
    img的一个属性

    <img loading = 'lazy' src='' width='' height=''>
    

    第三方插件懒加载方案
    比如lazyload

    (二)使用渐进式图片(要求美工制作)



    上面的是JPG默认的加载方式 从上至下加载
    下面的是渐进式的加载方式,从低像素到高像素

    渐进式图片的优点
    优点:始终让用户看到图片的全貌,可能刚开始不太清晰,慢慢清晰

    (三)使用响应式图片
    所有屏幕尺寸进行适配
    img的srcset属性

    <img src="lighthouse-200.jpg" sizes="100vw" srcset="lighthouse-100.jpg 100w, lighthouse-200.jpg 200W, lighthouse-400.jpg 400w, lighthouse-800.jpg 800w lighthouse-1000.jgp 1000w" >
    

    顾名思义是一个src的集合,100w 代表 宽度达到了100w 就使用light100.jpg这个src 以此类推
    有一个注意点,刚开始浏览器不会把这些src都下载下来,而是浏览器会根据当前浏览器的宽度下载某个最合适的src资源
    mg的sizes属性
    100vw 窗口视图的100%
    给了sizes值之后,srcset会根据实际的sizes值 选取最合适的src资源

    三、字体优化

    1.字体出现的两个问题

    字体未下载完成时,浏览器隐藏或自动降级,导致字体闪烁
    常见的两个问题:
    FOIT:flash of invisible text 文字从看不到到看到闪烁的过程
    FOUT:flash of unstyled text 文字从没有样式到有样式的闪烁过程

    2.使用font-display控制浏览器的行为,属性较新会有兼容问题

    五个属性

    auto用浏览器自动进行选择,没有太大用处
    block(阻塞):3s等待,在前3s不显示,如果3s之后期望字体下载完了,就用下载好的期望字体,要是3s之后期望字体还没有下载完,就用默认字体,什么时候期望字体下载完了,在进行替换
    swap(交换):刚开始加载就用默认字体,什么时候期望字体下载完成,在对默认字体进行替换
    fallback:其实是对block的一种优化,等待时间变为100ms,等待时间之后若期望字体下载完了,用期望字体,否则用默认字体,什么时候期望字体下载完什么时候进行替换
    optional:手机端特别优化的,等待时间100ms,若100ms 期望字体下载完了就一直用期望字体,若没下载完就一直用默认字体,永不替换.

    相关文章

      网友评论

          本文标题:前端性能优化-资源优化

          本文链接:https://www.haomeiwen.com/subject/zzaeultx.html