什么是前端性能优化?
所谓的“2-5-8原则” , 简单说 , 就是当用户能够在2秒以内得到响应时, 会感觉系统的响应很快 ;当用户在2-5秒之间得到响应时 , 会感觉系统的响应速度还可以 ;当用户在5-8秒以内得到响应时 , 会感觉系统的响应速度很慢 , 但是还可以接受 ;而当用户在超过8秒后仍然无法得到响应时 , 会感觉系统糟透了 , 或者认为系统已经失去响应 , 而选择离开这个Web站点 , 或者发起第二次请求 。
它是一种"联合图像专家小组是一种针对彩色照片而广泛使用的有损压缩图形" .
便携式网络图形是一种无损压缩的位图图形格式,支持索引、灰度、RGB 三种种颜色方案以及 Alpha 通道等特性。
图像互换格式是一种位图图形文件格式,以 8 位色(即 256 种颜色)重现真彩色的 图像,采用 LZW 压缩算法进行编码
Webp 是一种现代图像格式,可为图像提供无损压缩和有损压缩,这使得它非常灵 活。由 Google 在购买 On2 Technologies 后发展出来,以 BSD 授权条款发布。
npm install node-pngquant-native
jpegtran -copy none -optimize -outfile out.jpg in.jpg
通过改变每帧比例,减小 gif 文件大小,同时可以使用透明来达到更小的文件大小,目前公认的解决方案。
gifsicle --optimize=3 -o out.gif in.gif
gifsicle --optimize=3 --crop-transparency -o out.gif in.gif
这里简单介绍一下一些工具的使用方法
在 index.js中写入以下内容:
const lqip = require('lqip');
//将文件路径
const file = './in.png';
//将输入的图片转为base64
lqip.base64(file).then(res => {
console.log(res);
});
//color
lqip.palette(file).then(res => {
console.log(res);
//这里输出的是base64的图片地址
});
下面是原图和经过lqip处理后的比较
介绍:基于 SVG 的图像占位符(SVG Quality Image Placeholders)
npm install sqip
源码:https://github.com/axe312ger/sqip
使用方法:
在 index.js中写入以下代码
const sqip = require('sqip');
const result = sqip({
filename: './in.png',
numberOfPrimitives: 10 //可根据不同应用场景设置大小
});
console.log(result.final_svg);
在本地执行 node index.js 后,将会输出一串的<svg>标签,将其直接放入HTML文件中即可。非常的方便
下面是两个图片的对比:
我们可以看到,这个方法的图片会比lqip稍微清晰那么一点点。
在实际使用中,我们经常会看到网页会有这样的模糊图片效果,一般都是在网页中先加载模糊的base64图片或者是svg图标图,然后再加载高清大图,这样会给用户更好的体验。
@media screen and (max-width:640px) {
my_image{
width:640px;
}
}
• img 标签属性
<img srcset="img-320w.jpg, img-640w.jpg 2x, img-960w.jpg 3x"
src=“img-960w.jpg” alt=“img”> (x 描述符:表示图像的设备像素
看了以上这些,你是否还会接着使用笨重繁琐的图片呢?
总结:以上就是关于前端静态资源中的图片资源的优化方案,希望大家看完以后能够有所收获,大家也可以动手去尝试。
参考:极客时间《前端全链路性能优化》