对于不支持webp格式的图片的浏览器(IE、safari等)的解决办法

目的:优化网站,减少图片加载速度,提升用户体验,提高性能。

WebP 是由谷歌(google)开发的一种旨在加快图片加载速度的图片格式,并能节省大量的服务器宽带资源和数据空间,在压缩率上比 JPEG 格式更优越,同时提供了有损压缩与无损压缩的图片文件格式,在质量相同的情况下,WebP 格式图像的体积要比 JPEG 格式图像小 40%。
缺点:还没有在各个主流浏览器上兼容。
所以目前safari这个鬼也还没有支持他,这是个硬伤,我们来想想办法。
 
1.对于少量的或仅有几个图片的情况下,可以直接用 
<picture></picture>
<picture>
  <source srcset="img.webp" type="image/webp">
  <img src="img.png">
</picture>

2.如果有大量页面需要更改,那么Apache的mod_rewrite模块可以帮助我们实现将.webp图像提供给支持的浏览器。

来。我们来在.htaccess文件做做手脚,,,,,

将支持webp格式的浏览器,如果有此webp格式的图片则返回webp的图片,如果没有则显示原图片;
将不支持webp格式的浏览器,直接显示原图片。
#RewriteCond %{REQUEST_URI}  (?i)(.*)(\.jpe?g|\.png)$ 
 1 <IfModule mod_rewrite.c>
 2     RewriteEngine On
 3 
 4     # Check if browser supports WebP images
 5     RewriteCond %{HTTP_ACCEPT} image/webp
 6 
 7     # Check if WebP replacement image exists
 8     RewriteCond %{REQUEST_FILENAME}.webp -f
 9 
10     # Serve WebP image instead
11     RewriteRule (.+)\.(jpe?g|png|gif)$ %    {REQUEST_FILENAME}.webp [T=image/webp,E=REQUEST_image]
12     <IfModule mod_setenvif.c>
13         SetEnvIf Request_URI ".(jpe?g|png|gif)$" _image_request
14     </IfModule>
15     <IfModule mod_headers.c>
16         Header append Vary Accept env=REQUEST_image
17     </IfModule>
18     <IfModule mod_mime.c>
19         AddType image/webp .webp
20     </IfModule>
21 </IfModule>

OK,现在已经大功告成啦,去喝杯茶,哈哈哈……

仅供学习使用,哪里有不对的或者不明白的可留言,一起来探讨。
注:转载请注明出处。

 

posted @ 2020-07-23 17:05  Ambtin  阅读(5017)  评论(2编辑  收藏  举报