前言
图片自己比文字更容易给人留下直观印象造成记忆,在信息量爆发的移动互联网时代更是如此,图片基本占据了用户们80%以上的注意力,因此人们对于图片质量的要求也就愈来愈高了。JPG、JPEG、PNG、GIF这些图片格式基本上已经达到了优化极限,是时候试试新的东西了。html
关于WebP
WebP是谷歌在10年推出一种新型图片格式,最先也是应用在谷歌产品中,谷歌前不久发布的Android Studio 2.3正式版中就包括对WebP支持的更新。web
与其余图片格式相比,在肉眼没法分辨图片质量差别的状况下,WebP的空间占用是最小的,目前国内外各大互联网公司都已经开始应用这一图片格式。浏览器
美团云实践:Webp 格式的识别与转换缓存
在实测中,webp 格式比 jpg 格式减少约 20%。这对优化用户体验,减小CDN带宽消耗有很好的效果,但并非全部浏览器都支持 webp ,因此为了使用 webp,须要作一点兼容性的工做。cookie
首先是判断,即识别单次访问的来源浏览器是否支持 webp 格式,
其次是执行,若是该浏览器支持,则将原图替换为 webp 格式,并返回。若是不支持,则显示原格式图片。函数
在识别阶段,咱们有两种方法:测试
2)读取 JavaScript 种下的 cookie 判断浏览器支持状况
Server处理中的另外一种方式是经过读取 JavaScript 种下的 cookie来实现判断。
这种方式的优势是表现稳定,访问速度更快,切换无压力。
但缺点是,页面静态化会致使用户切换浏览器时不能自主更新,图片服务失效。
好比用户用支持webp的浏览器A请求页面,这时缓存的静态页面均使用webp图片,但当该用户使用不支持webp的浏览器B时,访问网页则会出现请求不到图片的报错。优化
2.Client 处理
Client 处理,是美团云为美团主站提供的处理方式。在这种处理方式中,浏览器端发送的beacon webp 请求后,经过检测其加载状况来断定 webp 支持状况,而后浏览器写一个cookie。以后经过读取浏览器cookie判断是否支持webp,就能够进行下一步替换操做了。cdn
替换图片过程当中也是有两种处理方式: server
1.Server 处理
在 server 端处理的优势是对下游开发者透明,缺点是静态页面的缓存数量会翻倍。
替换方式以下:
2.Client 处理
在 client 端处理能够比较好地应对页面静态化的状况,主要针对懒加载(非首屏)的图片进行处理,直接经过修改懒加载器来实现。
对非懒加载的图片暂时没有特别好的办法。目前,可用替换路径的方式来处理。
Client 处理实际上效果也是不错的,美团页面里90%以上的图片都是懒加载的,基本上均可以知足需求。对于大多数用户来讲,采用Client 处理实现webp转换是个不错的选择。
美团云对象存储服务如今已经支持webp功能,感兴趣的朋友能够实测对比一下,看看差异。
mos.meituan.com/activity/we…