• 前端性能优化-静态资源优化1-图片


    本文地址: https://www.cnblogs.com/veinyin/p/14274238.html

    1 图片格式及应用场景

    1. jpeg

    栅格图,有损压缩图形格式,常用于存储和传输照片

    适用:颜色丰富的照片、焦点图、banner图、结构不规则的图片

    不适用:线条图、文字、图形图标,因为压缩算法不是很支持这类图形,也不支持透明度

    2. png

    栅格图,无损压缩的位图图形格式,支持索引、灰度、RGB、alpha 通道(png24 - 24位彩色图像,png8 - 8位灰度图像)

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

    3. GIF

    位图图形格式,8位色(256 种),采用 LZW 压缩算法编码,只支持完全透明和完全不透明

    适用:动画、图标

    不适用:彩色图片,因为每像素只有8比特

    4. webp

    现代图像格式,可有损压缩(比 jpeg 小 25-34%)和无损压缩(比 png 小 26%),在一定程度上同时保证图像质量和文件体积,支持动画和透明度,采用 8 位压缩算法

    适用:图形、半透明图像

    不适用:彩色图片,因为最多处理 256 色

    2 优化

    1. 图片压缩

    png:node-pngquant-native,跨平台,压缩比高,压缩 png24 非常好

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

    jpg:jpegtran,跨平台,可压缩 10% 左右(10k -> 9k) 

    gifsicle --optimize=3 -o out.gif in.gif # 压缩,优化级别要 >= 2,因为 1 基本不压缩
    gifsicle --optimize=3 --crop-transparency -o out.gif in.gif # 截去透明部分

    2. 图片尺寸随网络环境变化

    在不同网络环境下(3G/4G/WiFi)加载不同尺寸和像素的图片,通过在图片 URL 后缀加不同参数实现

    3. 响应式图片

    • JS 绑定事件检测窗口大小
    • CSS 媒体查询
    • img 标签属性 srcset 是 H5 属性,自动适配,src 是不支持 srcset 时的备用选项
    <img srcset="img-320.jpg, img-640.jpg 2x, img-960.jpg 3x" src="img-960.jpg" alt="">
    

    4. 逐步加载图像

    • 使用统一占位符(每一张图后面都加上一个展位图片,如公司 logo 等)
    • 使用 LQIP (low quality image placeholders 低质量图像占位符)

        npm install lqip

    • 使用 SQIP (svg quality image placeholders 基于 SVG 的图像占位符)

      npm install sqip

    5. 使用其他格式

    • web font 代替图片(小图标、业务图片)

    • data URI 代替图片(base64)

    • 雪碧图(减少请求)

    6. 图片服务器自动优化

    就是在图片 URL 链接上,拼接不同的特殊请求参数,服务器自动生成不同大小、质量、格式的图片

    有如下处理方式:

    • 图片裁剪。按横边、短边、填充、拉伸等方式
    • 图片格式转换。JPG、GIF、PNG、WEBP 等,支持不同图片压缩率
    • 图片处理。添加水印、高斯模糊、重心处理、裁剪边框等
    • AI 能力。鉴黄、智能抠图、智能排版、智能配色、智能合成等

     

  • 相关阅读:
    ASP.NET没有魔法——ASP.NET MVC Razor与View渲染
    ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
    ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(下篇)
    ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)
    ASP.NET没有魔法——ASP.NET MVC 模型验证
    ASP.NET没有魔法——ASP.NET MVC 模型绑定
    ASP.NET没有魔法——ASP.NET OAuth、jwt、OpenID Connect
    ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证
    MyDAL
    Git
  • 原文地址:https://www.cnblogs.com/veinyin/p/14274238.html
Copyright © 2020-2023  润新知