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

news/2024/5/10 3:01:56/文章来源:https://blog.csdn.net/weixin_34248849/article/details/89109642

图片是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_774559.aspx

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

相关文章

laravel 开发的双语网站_[扩展推荐] Laravue —— 漂亮的 Laravel 管理界面

文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t/37417介绍几个月前我尝试为我的项目寻找新的解决方案, 我已经使用 Vue 构建了一个 单页应用 (使用这个 非常棒的框架, 使用 Laravel Lumen 作为 API 网关, 使用 Laravel Pass…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能,通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

一本专门解决网站可用性和易用性问题的实用书籍

本文选自《网站交互设计模式》一书前言。 4年前,我们在本书开始写到一个人发现了一条会说话的狗的故事。当问到那条狗说了什么时,那个人回答:“谁关心这个?它是一条会说话的狗啊!”在这件事情发生几年后,即…

监控器材律师网站制作_常规警用/安保器材工具分类

秦皇岛银盾提供专业常规保安器材及装备,常规安保器材工具的使用方法及使用教程,更多秦皇岛警用工具、秦皇岛安保器材相关资讯尽在秦皇岛银盾。 执法装备 単警装备 | 警用抓捕器 | 警用不锈钢叉 | 警棍 | 约束带 | 其他 | 警用数码录音取证系统 | 公安移动…

金融计算机去哪个网站找工作,海归金融硕士找工作应该选择哪个网站?

海归金融硕士在当下的就业市场之中还是非常吃香的,工资待遇也非常的不错。只不过给到海归金融硕士的岗位往往都属于高薪岗位,普通的求职网站之中很少有相应的岗位录入,即便有也是竞争激烈,且待遇配不上海归金融硕士的学历。而海归…

PHP网站的文章添加功能,给你的WordPress网站文章正文添加选项卡

插件作者网站的演示效果:http://tabbervilla.com/wordpress-post-tabs/上面的图片这样的正文选项卡切换功能,在介绍某一个产品时,可以把这个产品的功能、参数、演示和图片等等信息分门别类,让人能够非常清晰的将产品的信息展示在用…

网站隐藏index.php,iis隐藏index.php

iis隐藏index.php的方法:首先安装微软的URL Rewrite模块;然后查看url重写模块;接着点击导入规则;最后填入重写规则,并点击右侧“应用”提交即可。推荐:《PHP视频教程》该方法适用于所有品牌电脑。iis隐藏in…

云服务器网站logo,云服务器 logo

云服务器 logo 内容精选换一换云服务器组是对云服务器的一种逻辑划分,云服务器组中的弹性云服务器遵从同一策略。当前仅支持反亲和性,即同一云服务器组中的弹性云服务器分散地创建在不同的主机上,提高业务的可靠性。您可以使用云服务器组将业…

Esri在线视频网站上线!

Esri在线视频网站上线!地址为:http://video.esri.com 这里提供了一个更友好的互动环境,让大家了解GIS产业,行业活动和软件技术。 在这里你可以: 能够通过字幕导航,并且可下载字幕通过Esri ID登录&#xff0…

Esri在线视频网站上线!

Esri在线视频网站上线!地址为:http://video.esri.com 这里提供了一个更友好的互动环境,让大家了解GIS产业,行业活动和软件技术。 在这里你可以: 能够通过字幕导航,并且可下载字幕通过Esri ID登录&#xff0…

对搜狐、网易和TOM三大门户网站的SQL注入漏洞检测

对搜狐、网易和TOM三大门户网站的SQL注入漏洞检测 本文节选自《大中型网络入侵要案直击与防御》一书 此外,笔者对搜狐及TOM和网易这三大门户网站作了注入攻击检测,发现同样存在明显的注入漏洞,安全性很糟糕。 1.MySQL注入检测搜狐门户网站 …

Drupal是基于PHP语言编写的用于开发网站的开发型CMF

序 Drupal诞生于2000年,是一个基于PHP语言编写的用于开发网站的开发型CMF(内容管理框架)。Drupal强大的定制开发能力,也使其成为众多有技术实力的网站建设公司优先选用的网站开发平台。 任何网站建设公司自己开发的系统&#xf…

博文视点大讲堂41期-SEO难点之网站内部链接结构

博文视点大讲堂41期 SEO难点之网站内部链接结构 SEO是什么? 虽然这些年SEO概念普及了,但在很多人眼里,SEO和、欺骗是一回事儿。这是对SEO的极大误解。 SEO是个强有力的工具,能以很合理的方式进行,既照顾到用户需…

网站导航颜色停留_注重用户体验的网站建设+seo优化服务商--极度创想

如果我们坚持注重提升用户体验,把网站优化以提升用户体验为向导,那么网站优化的成效也便会水到渠成。一切还都应该在重视用户体验,提升用户使用体验的前提下而开展。所以做好网站对搜索引擎的优化并不意味着就一定要牺牲用户体验。​网站结构…

众多SEO专家集体盛赞

《SEO实战密码》将给你思路、眼界和方法的拓展之道。选一个适宜阅读的角落,一杯咖啡,一支笔,听Zac系统地讲SEO知识、见解和经验分享吧。我们都知道,你的竞争对手也会是Zac的粉丝。 葛小飞(天真)&#xff0…

博文视点大讲堂41期——SEO难点之网站内部链接结构 圆满成功

博文视点大讲堂41期——SEO难点之网站内部链接结构 圆满成功 2010年11月21日,电子工业出版社博文视点在中关村图书大厦五层如期举办了“博文视点大讲堂第41期:SEO难点之网站内部链接结构”,本次活动邀请经典畅销图书《网络营销实战密码》作者…

《SEO实战密码》终于上市了

经过几番折腾,《SEO实战密码》终于陆续在主要网站和书店上架了,读者目前可以在中国互动出版网、当当(普通版)、卓越亚马逊、淘宝购买。另外,前几天回国时到出版社签名了200本书,签名版已全部交当当出售&…

在一堆人还在犹豫《SEO实战密码》是否值得购买的时候,在下已经收藏了1/10的签名版...

只能说那些犹豫的朋友们太没眼光了,论国内SEO,如果连Zac都信不过,还有谁可信? 当我得知Z大的签名版上架,我毫不犹豫地从床底拉出鞋盒,从左脚的鞋内拿出1000元,从右脚的鞋内拿出200元&#xff0…

超人气新书《SEO实战密码——60天网站流量提高20倍》火爆热销

超人气新书《SEO实战密码——60天网站流量提高20倍》火爆热销 11月底,《SEO实战密码——60天网站流量提高20倍》在全国读者的翘首企盼中正式面市,仅一周的时间,它便以令人窒息的速度在卓越网迅速脱销,当当网签名本2天之内抢售一空…

bae部署php网站,使用百度开放云 应用引擎 BAE 部署项目的一些心得

说明:本部署说明针对 Java 应用。当然,我这里记录的也只是为了方便自己看,要想得心应手地使用 BAE 部署项目,还是要去看 BAE 的官方文档,还是要去看 BAE 的官方文档,还是要去看 BAE 的官方文档。为什么使用…