未优化的图像是影响网站性能的主要因素之一,尤其是初始负载。根据图像的分辨率和质量,图像可占整个网站流量的70%。生产环境中存在未优化的图像会显着影响初始加载速度的情况并不少见。没有经验的开发人员往往意识不到这个潜在的问题,也不知道优化图像的各种工具和方法。本文的目的是介绍优化网络图像的主要工具和方法。计算JPG文件尺寸未压缩图像的尺寸很容易通过将图像的长度和宽度(px值)乘以3个字节来计算(因为RGB颜色系统使用24位)。将结果除以1,048,576(1024*1024)得到兆字节。image_size=(image_width*image_height*3)/1048576例如,计算一张分辨率为1366pxx768px的未压缩图片的大小:1366*768*3/1048576=3Mb现在一个网站的平均大小在2Mb到3Mb之间,想象一下,单个未压缩的图像占用了80%的流量。在慢速移动网络上,加载3Mb图像可能需要很长时间。如果等待网站加载的用户将大部分时间都花在等待单个图像的加载上,那么该网站将损失大量流量。想想都可怕,不是吗?那么,在保证可接受的图像分辨率和图像质量的前提下,我们可以做些什么来优化图像呢?在线图片优化如果你的项目是一个简单的静态网站,只有几张不经常(甚至从不)更改的图片,那么你可以直接使用在线工具。这些工具使用了各种算法来压缩图片,效果还不错,对于简单的项目来说绰绰有余。据我所知比较著名的在线工具有:Compressor.io,支持JPG、PNG、SVG、GIF,一次上传1个文件Squoosh,支持JPG、PNG、SVG、GIF,一次上传1个文件Optimizilla,支持JPG,PNG,每次最多上传20个文件TinyPNG,支持JPG,PNG,每次最多上传20个文件SVGMinify,支持SVG,每次上传一个文件svgomg,支持SVG,每次上传一个文件AutomationSolution然而,如果您正在处理多人协作并使用大量图像的复杂项目,则手动添加每个图像可能会很乏味。同时,存在因人为失误或其他因素导致部分图片无法优化的风险。复杂的项目通常使用同样复杂的构建系统,例如Gulp、Webpack、Parcel。配置此类构建系统和添加图像优化插件非常方便。这使得完全自动化图像优化过程成为可能,一旦图像包含在项目中就对其进行优化。据我所知,最著名的插件是imagemin,它既可以作为命令行工具,也可以作为构建工具的插件:imagemin-cligulp-imageminimagemin-webpackparcel-plugin-imageminimageloadingoptimization我们介绍过如何通过压缩图片来减小文件大小,但不要过多改变图片分辨率而影响图片质量。虽然图片优化后文件大小可以减少很多,但是一次加载大量优化后的图片(比如电商网站的商品列表页)还是会影响性能。懒加载懒加载也叫按需加载,意思是只加载当前视图(用户屏幕的显示范围)中的图片,其他图片不加载(直到出现在当前视图中)。只有较新的浏览器支持原生延迟加载,但有许多基于JavaScript的解决方案。原生延迟加载
