Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

前端性能优化---图片 #4

Open
hulin32 opened this issue Feb 7, 2018 · 0 comments
Open

前端性能优化---图片 #4

hulin32 opened this issue Feb 7, 2018 · 0 comments

Comments

@hulin32
Copy link
Owner

hulin32 commented Feb 7, 2018

这章我们来聊聊图片的优化。

大小

图片现在基本每个网站都会有,并且还不少,网站logo,图表,产品展示图,这是我们首先需要优化的,而且我觉得这些优化其实难度不大,大多是体力活。应该图片格式不一样所需要使用的工具也不一样,所以不好统一用工具去生成(其实还是有的,后面会介绍到,只是效果不如针对不同格式的优化工具好),因为生成出来图片有的会糊掉。但是如果多的话还是建议这样去生成,再去筛查。

前面说到图片格式不一样,这里谈谈图片的种类,从大类来分有矢量图和栅格图两种,就我现在的了解,矢量图是有很多线条组成,是可以任意收缩大小的,所以表现复杂的图像就显得有点吃力了,栅格图片就主要展示复杂颜色的图片啦,比如相机图片.所以应该根据你要显示的内容选择相应的图片格式。 矢量图格式一般为SVG, 栅格图片格式有JPEG,PNG, GIF,新的格式有WebP等.

1.SVG优化
压缩工具有如下:
svgo
在线工具
sketch svgo
我找svg图片试过,根据图片的不同,优化的效率也不大一样。我用了两张不同大小的图片进行了压缩(图片在这里),分别压缩了25%和50%,所以感觉这样的工具还是挺好的。

2.JPG优化
有两个imagemin插件
imagemin-mozjpeg
imagemin-guetzli
(我是google官网的例子代码)

3.PNG优化
有两个imagemin插件
imagemin-pngquant
imagemin-advpng

当然如果可以的话可以用更新的格式WebP,更好的压缩率。
记得服务器开启gzip压缩,这个见效很好。

如果使用webpack的话,也有相应的插件(没用过)可以用于图片优化

缓存

服务器端开启文件缓存,尽量不重复获取相同的数据。

<picture> 标签 和 image srcset 属性

如果你在img标签中这样使用

<img src="photo.png" srcset="photo@2x.png 2x">

那么在像素高的设备上就会读取更高清的图片

另外还有就是picture标签

<picture>
  <source media="(min-width: 800px)" srcset="head.jpg, head-2x.jpg 2x">
  <source media="(min-width: 450px)" srcset="head-small.jpg, head-small-2x.jpg 2x">
  <img src="head-fb.jpg" srcset="head-fb-2x.jpg 2x" alt="a head carved out of wood">
</picture>

会使用媒体查询并且根据分辨率的不同来显示图片

SEO

添加 alt 语义化,图片命名

无障碍阅读

添加aria-label等标签(后面会专门写一张)

@hulin32 hulin32 changed the title 性能优化---图片 前端性能优化---图片 Feb 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant