通过图片优化,我将网站大小减少了62%

news/2024/5/9 15:22:59/文章来源:https://cpongo.blog.csdn.net/article/details/89017421

图片是Web提供的最基本的一种内容类型。人们都说一张图片胜过千言万语。但如果你一不小心,它也可能占用你好几兆带宽。

虽说Web图像应该尽可能清晰明快,但文件大小必须是可管理的,以便保持较快的加载速度,并且应该将数据使用保持在可接受的水平。

在我的网站上,我发现主页的大小超过了1.1MB,其中图像占了88%。我也意识到我提供的图片比实际需要的要大(比如分辨率)。显然,还有很大的优化空间。

\"\"

我开始阅读由Addy Osmani撰写的“Essential Image Optimization”电子书(),并开始在我的网站上尝试他的建议。然后我又研究了一些响应式图像方面的知识,并也将其应用在我的网站上。

这样就可以将页面大小降至445KB,减少了约62%!

\"\"

本文将介绍我如何优化主页大小,将其提升到更可管理的水平。

什么是图像压缩?

压缩图像是指在保持可接受的视觉质量水平的同时减小图像文件的大小。我使用imagemin来压缩我网站上的图像。

要使用imagemin,请确保已安装了Node.js,然后打开终端窗口,cd到项目的文件夹,并运行以下命令:

npm install imagemin

然后创建一个名为imagemin.js的新文件,并粘贴以下内容:

const imagemin = require('imagemin');const PNGImages = 'assets/images/*.png';const JPEGImages = 'assets/images/*.jpg';const output = 'build/images';

你可以根据具体的项目结构随意修改PNGImages、JPEGImages和output的值。

要进行图像压缩,你需要根据要压缩的图像类型安装一些插件。

使用MozJPEG压缩JPEG

为了压缩JPEG图像,我使用了Mozilla的MozJPEG,它可以通过imagemin-mozjpeg作为imagemin的插件使用。你可以通过运行以下命令来安装它:

npm install imagemin-mozjpeg

然后将以下内容添加到imagemin.js文件中:

const imageminMozjpeg = require('imagemin-mozjpeg');const optimiseJPEGImages = () =\u0026gt;  imagemin([JPEGImages], output, {    plugins: [      imageminMozjpeg({        quality: 70,      }),    ]  });optimiseJPEGImages()  .catch(error =\u0026gt; console.log(error));

你可以在终端中输入node imagemin.js来运行这个脚本。这样就会处理所有的JPEG图像,并将优化过的图像放在build/images文件夹中。

我发现将质量设置为70可以得到足够好的图像,但是你的要求可能会不一样,所以请根据你的需要设置具体的值。

MozJPEG默认会生成渐进式JPEG,在加载图像时,从低分辨率逐渐加载到高分辨率,直到图像加载完毕。由于它们的编码方式不一样,所以往往会比基线JPEG小一些。

你可以使用这个命令行工具来检查JPEG图像是否是渐进式的。

Addy Osmani已经详细介绍过使用渐进式JPEG的优点和缺点。

在我看来,它是利大于弊的,所以我使用了默认设置。

如果你更喜欢使用基线JPEG,可以在选项对象中将progressive设置为false。此外,更多的选项设置请参考imagemin-mozjpeg页面。

使用pngquant优化PNG图像

pngquant是我用来优化PNG图像的首选工具,你可以通过imagemin-pngquant插件来使用它:

npm install imagemin-pngquant

然后将以下内容添加到imagemin.js文件中:

const imageminPngquant = require('imagemin-pngquant');const optimisePNGImages = () =\u0026gt;  imagemin([PNGImages], output, {    plugins: [      imageminPngquant({ quality: '65-80' })    ],  });optimiseJPEGImages()  .then(() =\u0026gt; optimisePNGImages())  .catch(error =\u0026gt; console.log(error));

我发现将quality设置为65到80可以在文件大小和图像质量之间获得良好的折衷。

使用这些设置,我可以将网站截图从913 KB减到到187 KB,而不会出现任何明显的视觉方面的质量损失。文件大小整整减少了79%!

下面是这两个文件,可以下载下来自己去判断:

原始图像(913 KB):

\"\"

  • 优化过的图像(187 KB)

\"\"

使用WebP图像(需要浏览器支持)

WebP是Google推出的一种相对较新的图像格式,旨在通过编码无损和有损格式的图像获得较小体积的图像,这让它成为JPEG和PNG的绝佳替代品。

WebP图像的视觉质量通常与JPEG和PNG相当,但文件大小要小得多。例如,当我将上面的屏幕截图转换为WebP时,我得到了一个88 KB的文件,其质量与913 KB的原始图像相当。文件减小了90%!

看看这三张图片,你能分辨出来吗?

  • 原始PNG图像(913 KB)

\"\"

  • 优化过的PNG图像(187 KB)

\"\"

  • WebP图像(88 KB),可在Chrome或Opera中查看:https://freshman.tech/assets/dist/images/articles/freshman-1600.webp

我认为它们在视觉质量方面是差不多的,但节省的文件大小却是很可观的。

现在我们知道,在可能的情况下尽可能使用WebP格式,但要注意,现在它还不能完全取代JPEG和PNG,因为浏览器对WebP的支持并不普遍。

在撰写本文时,Firefox、Safari和Edge还不支持WebP。

\"\"

不过,caniuse.com网站的数据显示,全球有超过70%的用户在使用支持WebP的浏览器。这意味着你可以使用WebP图像为大约70%的用户提高网页加载速度。

让我们来看看在Web上提供WebP图像的具体步骤。

将JPEG和PNG转换为WebP

使用imagemin-webp插件将JPEG和PNG图像转换为WebP,这个非常简单。

在终端中运行以下命令来安装它:

npm install imagemin-webp

然后将以下内容添加到imagemin.js文件中:

const imageminWebp = require('imagemin-webp');const convertPNGToWebp = () =\u0026gt;  imagemin([PNGImages], output, {    use: [      imageminWebp({        quality: 85,      }),    ]  });const convertJPGToWebp = () =\u0026gt;  imagemin([JPGImages], output, {    use: [      imageminWebp({        quality: 75,      }),    ]  });optimiseJPEGImages()  .then(() =\u0026gt; optimisePNGImages())  .then(() =\u0026gt; convertPNGToWebp())  .then(() =\u0026gt; convertJPGToWebp())  .catch(error =\u0026gt; console.log(error));

我发现,将quality设置为85可以得到与PNG质量相当的WebP,但文件却要小得多。对于JPEG,我发现将quality设置为75可以在视觉质量和文件大小之间获得适当的平衡。

说实话,我还在试验这些值,所以不把它们作为推荐值,更多信息请查看imagemin-webp页面。

在HTML中使用WebP图像

在得到WebP图像后,可以使用下面的标签为支持WebP的浏览器提供WebP图像,同时为不支持WebP的浏览器提供等效(优化)的JPEG或PNG后备。

\u0026lt;picture\u0026gt;    \u0026lt;source srcset=\u0026quot;sample_image.webp\u0026quot; type=\u0026quot;image/webp\u0026quot;\u0026gt;    \u0026lt;source srcset=\u0026quot;sample_image.jpg\u0026quot; type=\u0026quot;image/jpg\u0026quot;\u0026gt;    \u0026lt;img src=\u0026quot;sample_image.jpg\u0026quot; alt=\u0026quot;\u0026quot;\u0026gt;\u0026lt;/picture\u0026gt;

支持image/webp媒体类型的浏览器将下载WebP图像并显示它,而其他浏览器将下载JPEG图像。

不支持\u0026lt;picture\u0026gt;的浏览器将跳过所有source,并加载底部img标签的src属性所定义的内容。可以说,我们已经对我们的页面进行了渐进式增强,可以支持各种浏览器。

\"\"

请注意,不管怎样,img标签是实际渲染在页面上的内容,因此它是语法的必需组成部分。如果省略img标签,就不会渲染任何图像。

\u0026lt;picture\u0026gt;标签和所有source都在那里,浏览器可以选择要使用的图像版本。在选择了需要使用的source后,URL将被提供给img标签,然后相应的图像就会被显示在页面上。

这意味着你无需为\u0026lt;picture\u0026gt;或source设置样式,因为浏览器不会渲染这些标签。因此,你可以像以前一样继续为img标签设置样式。

英文原文:https://medium.freecodecamp.org/image-optimization-558d9f449e3

更多内容,请关注前端之巅。

\"\"
会议推荐

2019年6月,GMTC全球大前端技术大会2019即将到来。小程序、Flutter、移动AI、工程化、性能优化…大前端的下一站在哪里?点击下图了解更多详情。

\"\"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_751850.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何让 HR 找到你? 你需要进行个人SEO优化!(一)

编辑丨April Shen专栏丨九章算法互联网和许多在线招聘平台的出现为雇主和求职者提供了更多的选择。招聘人员和雇主经常通过互联网和在线招聘平台搜索适合他们公司的求职者,而根据他们不同的招聘要求,他们的搜索选项也并不仅限于谷歌和Bing,他…

假期不想在躺尸中度过?推荐你十个优质编程网站

撰文 | April专栏 | 九章算法对于软件开发人员来说,保持编程的竞技水平是非常有必要的。通过解决不同类型的编程难题,迎接不同类型的编程挑战,不仅能让你成为处理问题的高手,帮助你了解编程语言的复杂性,还能让你学习到…

038制作web服务器和发布网站

一、web服务器的作用 我们写的品优购网站,目前是放到自己电脑上的,只能自己访问浏览。 如果想要很多人访问我们的网站,可以把品优购放到服务器上,这样就可以多人访问我们的品优购网站了。 二、什么是web服务器 服务器&#xf…

python+selenium 登录xx网站

2019独角兽企业重金招聘Python工程师标准>>> 1.操作系统是MAC 64bit 自带的python,编码是UTF-8 2.在页面https://pypi.python.org/pypi/selenium 上下载selenium 3.将selenium的压缩包拷贝到python目录下,然后解压 4.更换管理员权限 5.到sele…

只知道LinkedIn的你,错过了多少机会!美帝十大求职网站收好

1、Indeed http://www. Indeed.com/ 职位搜索大佬 Indeed是美国职位搜索引擎中的元老级人物。Indeed可以为求职者提供一些宝贵的数据信息,如基本工资,人均职位和行业就业趋势。 优势 大公司HR的人气王,世界五百强的招聘信息都能在Indee…

IIS7.5中调试.Net 4.0网站出现无厘头500错误的解决办法 (转)

刚刚 部署了ii7的dll的有x86写的,就会出现以下这样的问题 iis 7 x86,Could not load file or assembly Name or one of its dependencies. An attempt was made to load a program with an incorrect format. 解决这样的,只要设置一下iis兼容x86程序就可…

设计师必备!免费下载 PSD 素材的32个网站

今天我想和大家分享一组可以免费下载 PSD 图形素材的最好的网站。 PSD 文件是非常有用的资源,因为你可以看到所有的层,使用了什么技术来创建出这些作品和效果。 某些列出的网站可能已是众所周知的,但你会惊奇地发现他们也提供免费的 PSD 文件…

十周后,62%的PHP网站将运行在一个不受支持的PHP版本上

根据W3Techs的统计数据,目前约有78.9%的网站使用PHP开发。\u0026#xD;\u0026#xD;但是,PHP 5.6.x的安全支持将在2018年12月31日正式停止,这标志着对古老的PHP 5.x分支版本的支持都将结束。\u0026#xD;\u0026#xD;也就是说,…

码农的暑期专属学习网站,赶紧get起来吧!

暑假,又到了立flag的时刻,此刻的你,是否已经准备好了满满一张to do list,不管有没有,小编已经准备了一份码农专属的SUMMER BUCKET LIST,快来装备自己,打响你的专属假期吧。 暑期第一弹 快乐的肥…

全球SEO行业调查报告

这是一份来自MOZ的调查报告,本报告是两年一次的SEO行业调查,主要围绕SEO从业人员的特征、工作内容时间分配比例、对未来市场的看法、使用的seo工具以及SEO知识扩充渠道等展开。 这份报告可以对从事或即将从事SEO行业的朋友对本行业有一个大致的了解与判…

wordpress商城源码_外贸B2C商城建站系统,选择WordPress, Shopify, Magento还是Opencart?

很多做跨境B2C电商平台的用户, 无论Amazon, eBay还是速卖通, 都在考虑做一个B2C独立站用来辅助, 好处非常多, 我会在后面讲课里再详细讲解到. 那么外贸B2C商城建站系统到底该怎么选呢, WordPress, Shopify, Magento还是Opencart? 目前网上关于外贸B2C商城建站系统的文章, 都是…

让您的网站拥有MSDN资源库搜索功能[转摘MSDN]

方式一 在您需要添加MSDN搜索链接的地方添加以下代码&#xff1a;<script language"Javascript" src"http://www.microsoft.com/china/msdn/search/msdn_search.js"> </script>使用以上代码&#xff0c;产生的搜索样式如下图所示&#xff1a;注…

有哪些高质量的自学网站?

分享10个程序员优质自学网站~ 1. Github Github是程序员托管代码的平台&#xff0c;很多开发者都会在上面找各种各样的开源项目来学习。阿里、腾讯、字节跳动、美团、Google、Micosoft等国内外大厂都有自己的Github开源库。 如果你做的东西正好符合一些公司的要求&#xff0…

【网站使用】使用joomla 把数据制作进入安装包

2019独角兽企业重金招聘Python工程师标准>>> 制作安装包&#xff0c;为客户提供&#xff0c;使用方便快捷&#xff01; 一、从数据导出数据 登陆phpmyadmin 二、依次选择导出全选&#xff0c;另存文件&#xff0c;勾选drop table执行&#xff0c;保存到桌面&#xf…

神奇的滚动动画,30个视差滚动网站设计

使用 HTML5 和 CSS3&#xff0c;我们能够在浏览器中创建更有趣和更吸引眼球的效果。其中&#xff0c;视差滚动&#xff08;Parallax Scrolling&#xff09;就是这样的效果之一。这种技术通过在网页向下滚动的时候&#xff0c;控制背景的移动速度比前景的移动速度慢来创建出令人…

大社区型网站的架构总结之如何标示用户在使用哪个功能程序篇(草稿)

人是最会模仿的动物&#xff0c;很多先进的发明创造&#xff0c;并不是人类凭空想象出来的&#xff0c;而是仿造出来的&#xff0c;仿造的对象不是各种神奇的动物就是大自然的现象。 所以其实在软件开发中也是这样&#xff0c;真正的专家是最善于应用经验证明是有效的解决方案的…

第1章 大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> ##1.1 大型网站软件系统的特点## 高并发&#xff0c;大流量&#xff1a;需要面对高并发用户&#xff0c;大流量访问。 高可用&#xff1a;系统7*24小时不间断服务。 海量数据&#xff1a;需要存储&#xff0c;管理海量数…

推荐一个攻城狮教程工具类网站

2019独角兽企业重金招聘Python工程师标准>>> 今天查JS的一些框架&#xff0c;无意进入了一个网站http://www.w3cschool.cc/。浏览了一下之后&#xff0c;发现真是。。棒极了&#xff01;&#xff01;这个网站提供了多种语言和框架的入门教程&#xff0c;内容很丰富&…

前端工程师一般都喜欢去哪些网站逛?

推荐一些“小而美”的优质网站&#xff0c;前端学习提升、技术博客、实用工具……从多个方面实现提升&#xff0c;才是前端工程师的晋级之路&#xff01; 先赞再看&#xff0c;养成习惯&#xff01; 前端学习提升类 当前&#xff0c;前端开发正在迅猛发展阶段&#xff0c;不…

电商网站中,50W-100W高并发,秒杀功能是怎么实现的?

巧了&#xff0c;最近面试的时候问过一个差不多的题目。 某年双11&#xff0c;商家以4499的价格上架了某iphone&#xff0c;比官网价格便宜了1000员&#xff0c;库存总数10台&#xff0c;运营设置11/11 00:00活动生效&#xff0c;一人只能购买1台&#xff0c;商品售完为止。 首…