zoukankan      html  css  js  c++  java
  • 静态资源优化:图片、HTML、CSS优化

    笔记:刘威(putaoshu)的前端全链路性能优化实战

    1、图片

    JPEG:适合颜色丰富的照片、彩色图大焦点图、通栏banner图、结构不规则的图形;不适合线条图像、不支持透明度等(常用:照片)

    PNG:适合纯色、透明、线条绘图、图标;边缘清晰、有大块相同颜色区域;颜色数较少但需要半透明;由于是无损存储,彩色图像体积太大(常用:图标)

    GIF:适合动画、会动的图标。只能完全透明或完全不透明。

    webp:适用于图形和半透明图像。不适合彩色图片。比GIF有更好的动画,可以设置透明度。无损的webp比PNG小,有损的webp比JPEG小。

    (不确定是不是webp还未支持ie,目前看到jd首页给ie返回的是jpg图片,给chrome返回了webp格式的图片)

    2、压缩工具

    (1)压缩png:node-pngquant-native

    可以npm install直接安装。

    使用:pngquant.option({}).compress(buffer);

    (2)压缩jpg:jpegtran

    使用:jepgtran -copy none -optimize -outfile out.jpg in.jpg

    (3)压缩gif:Gifsicle,通过改变每帧比例,同时可以使用透明来达到更小的文件大小

    使用:优化基本设置为不小于2. gitsicle --optimize=3 -o out.gif in.gif

    3、图片尺寸随网络环境变化

    通过在图片URL后缀加不同参数来控制不同网络环境下加载不同尺寸和像素的图片

    4、响应式图片

    不同窗口大小、不同设备上展示不同大小的图片

    (1)JavaScript绑定事件检测窗口大小

    (2)CSS媒体查询

    @media screen and (max-640px){

      my_image{640px;}  }

    (3)img标签属性

    <img srcset='img-320w.jpg,img-640w.jpg 2x,img-960w.jpg 3x',

      src="img-960w.jpg" alt="img"> 

    5、逐步加载图像

    (1)统一使用占位符

    (2)使用LQIP:低质量图片占位,可通过npm install lqip安装

    (3)使用SQIP:基于svg的图像占位符,可通过npm install sqip安装

    6、真的需要图片吗?

    (1)web font代替图片

    (2)使用data url代替图片

    (3)采用image sprite(雪碧图)

    7、图片服务器自动优化

    图片服务器自动化优化是可以在图片url上增加不同特殊参数,服务器自动化生产不同格式、大小、质量的图片

    处理方法:图片裁剪(剪切、填充、拉伸、缩放等)、图片格式转换、图片处理(加水印、高斯模糊、重心处理等)、AI能力(鉴黄、智能抠图、智能排版等)

    8、精简HTML代码

    (1)减少HTML的嵌套

    (2)减少DOM节点数

    (3)减少无语义代码

    (4)删除http或者https。如果url的协议头和当前页面的协议头一致,或多协议头都可用,就可以考虑删除协议头

    (5)删除多余的空格、换行、缩进和不必要的注释

    (6)省略冗余标签和属性

    (7)使用相对路径的URL

    (8)文件放在合适位置

    a)css样式文件链接尽量放在页面头部

    b)js引用放在html,防止阻塞渲染

    c)设置favicon.ico:防止控制台报错,且出于用户观感考虑

    d)增加首屏必要的css和js:出于用户体验考虑

    9、css的优化:

    1)提升css渲染性能

      谨慎使用expensive属性(如:nth-child伪类、position:fixed定位);尽量减少样式层级数;尽量避免使用占用过多CPU和内存的属性(如text-indnt:-9999px);尽量避免使用耗电量大的属性(CSS3 3D transforms、CSS3 transitions、Opacity);

      尽量避免使用CSS表达式;尽量避免使用通配符选择器;尽量避免类正则的属性选择器;

    2)提升CSS文件加载性能

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

    3)精简css代码

      a)使用缩写语句

      b)删除不必要的零、不必要的单位、过多的分号;

      c)删除空格和注释

      d)尽量减少样式表的大小

    4)合理使用Web Fonts

      a)将字体布署CDN上

      b)将字体以base64形式保存在css中并通过localstorage进行缓存

      c)Google字体库使用国内托管服务

    5)css动画优化

      a)尽量避免同时动画

      b)延迟动画初始化

      c)结合SVG

  • 相关阅读:
    POJ 1887 Testing the CATCHER
    HDU 3374 String Problem
    HDU 2609 How many
    POJ 1509 Glass Beads
    POJ 1458 Common Subsequence
    POJ 1159 Palindrome
    POJ 1056 IMMEDIATE DECODABILITY
    POJ 3080 Blue Jeans
    POJ 1200 Crazy Search
    软件体系结构的艺术阅读笔记1
  • 原文地址:https://www.cnblogs.com/cvv54/p/13245844.html
Copyright © 2011-2022 走看看