如何通过优化主页大小,将网站大小减少 62%

news/2024/5/19 11:55:37/文章来源:https://blog.csdn.net/qianduan6666666/article/details/89432121

什么是图像压缩?

压缩图像是指在保持可接受的视觉质量水平的同时减小图像文件的大小。我使用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 = () =>  imagemin([JPEGImages], output, {    plugins: [      imageminMozjpeg({        quality: 70,      }),    ]  });optimiseJPEGImages()  .catch(error => 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 = () =>  imagemin([PNGImages], output, {    plugins: [      imageminPngquant({ quality: '65-80' })    ],  });optimiseJPEGImages()  .then(() => optimisePNGImages())  .catch(error => console.log(error));

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

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

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

原始图像(913 KB):

image

  • 优化过的图像(187 KB)

image

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

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

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

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

  • 原始 PNG 图像(913 KB)

image

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

image

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

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

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

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

image

不过,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 = () =>  imagemin([PNGImages], output, {    use: [      imageminWebp({        quality: 85,      }),    ]  });const convertJPGToWebp = () =>  imagemin([JPGImages], output, {    use: [      imageminWebp({        quality: 75,      }),    ]  });optimiseJPEGImages()  .then(() => optimisePNGImages())  .then(() => convertPNGToWebp())  .then(() => convertJPGToWebp())  .catch(error => console.log(error));

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

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

在 HTML 中使用 WebP 图像

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

<picture>    <source srcset="sample_image.webp" type="image/webp">    <source srcset="sample_image.jpg" type="image/jpg">    <img src="sample_image.jpg" alt=""></picture>

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

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

image

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

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

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

最后,给大家推荐一个前端学习进阶内推交流群685910553(前端资料分享),不管你在地球哪个方位,
不管你参加工作几年都欢迎你的入驻!(群内会定期免费提供一些群主收藏的免费学习书籍资料以及整理好的面试题和答案文档!)

如果您对这个文章有任何异议,那么请在文章评论处写上你的评论。

如果您觉得这个文章有意思,那么请分享并转发,或者也可以关注一下表示您对我们文章的认可与鼓励。

愿大家都能在编程这条路,越走越远。

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

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

相关文章

5个常用的上传图片进行搜索的网站

1.http://www.tineye.com/ 最常用的图片搜索引擎&#xff0c;一般需要尽可能的接近原图的文件才能锁定图片网址&#xff0c;不过准确度极高。目前缺点是图片收录主要为欧美地区&#xff0c;而且收录量也不是很大。 2.http://www.gazopa.com/ 如图所示相似图片搜索&#xff0c;想…

一个知名网站的微服务架构最佳实现

译者语&#xff1a;如果你的项目正在从单体升级为微服务而忧心&#xff1b;或者你在实践微服务过程中手忙脚乱&#xff0c;本文都是你不容错过的好文。 微服务架构的目标是帮助工程团队更快、更安全、更高质量地交付产品。拆分服务允许团队快速迭代的同时&#xff0c;保证了对系…

创业之前,网站先行

可能你们还没有准备好向世人展示你们的产品&#xff0c;但你们可以先做一些前期工作&#xff0c;先为产品搭建个网站&#xff0c;做好形象工作。我并不是说创业公司都不可以在暗地里开发自己的产品&#xff0c;直到产品成型后才公之于众。但我觉得&#xff0c;如果你已经为你的…

IT创业失败案例解析 - 第四篇 (一家失败的招聘网站)

原文标题&#xff1a;My eHarmony for Hiring Failure&#xff08;查看原文推荐&#xff09; 原文作者&#xff1a;eHarmony 双语对照 前几天我通读了我最新博文的评论&#xff0c;它着实吸引了很多评论&#xff0c;像其他一些带有煽动性标题的文章一样&#xff0c;最终&#x…

linux 绑定域名到网站目录,教你绑定域名到你空间的子目录(亲测可用)

近日脑洞大开&#xff0c;Project Ai需要一个论坛&#xff0c;然而为了装逼优雅&#xff0c;我想用个二级域名绑定到我论坛。但万网的虚拟主机默认没绑定域名到子目录这个功能的.中间省略经过一番折腾后&#xff0c;我发现了一个方法(亲测万网可用)其实原理也很简单&#xff0c…

php网站程序哪个好,php的cms系统哪个好

php的cms系统哪个好&#xff1f;国内常见的CMS有dedecms、PHPCMS、WordPress、帝国cms、5UCMS等。相对较好的应该属帝国cms了。帝国cms非常老牌的CMS&#xff0c;就如同该CMS官网介绍的安全、强大、稳定、灵活。安全性&#xff1a;高&#xff0c;姜就是老的辣&#xff0c;老牌的…

【转载】一次面试引发的思考(中小型网站优化思考)

前言 故事的起因是这样的&#xff0c;由于本人地处偏僻工作地点在美丽的冰城哈尔滨虽然地方很美丽&#xff0c;但是这里的软件行业实在是算不上“美丽”&#xff0c;这么多年由于个人原因或者公司原因经常换工作&#xff0c;因为这里都是中小型公司&#xff0c;没有什么大公司。…

tp5网站 服务器部署,tp5云服务器部署

tp5云服务器部署 内容精选换一换SAP B1的部署方案如图1所示。说明如下&#xff1a;VPC网络&#xff1a;为了保证网络的安全&#xff0c;SAP B1系统中所有节点在一个VPC网络内&#xff0c;且所有节点应属于同一个AZ(Available Zone)。公网子网区&#xff1a;NAT(Network Address…

html 隐藏广告代码大全,JS广告代码_JS广告代码大全_js特效代码_js特效代码大全 - 懒人建站...

网站设置点击任何地方弹出新页面广告只弹出&#xff0c;可指定时间间隔。利用Cookie记忆&#xff0c;超过指定时间刷新页面广告会再次生效。参数说明&#xff1a; href:http://www.51xuediannao.com/, //链接地址&#xff0c;必须配置成你的地址 target:_blank, zIndex:9999999…

利用 IIS日志追查网站入侵者

<script type"text/javascript"></script> <script type"text/javascript" src"http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>以前黑站黑了很多&#xff0c;但是就没有想过会不会被追踪到&…

nginx配置多个ssl证书_给自己的网站主页配置ssl证书

使用https 可以防止数据在传输过程中产生一些不必要的泄露&#xff0c;未 的页面在经过ssl证书的签发后会变成https开头&#xff0c;下面记录一下配置https加密的整个过程购买域名首先第一步我们为了防止自己的公网ip暴露出去&#xff0c;需要给自己的网站设定一个全球唯一的域…

网站搭建教程(详细步骤)

文章目录网站组成一、服务器二、网站程序三、域名空间基本介绍网站空间如何购买空间&#xff08;云虚拟主机&#xff09;如何登陆服务器网站创建安装宝塔并配置信息云虚拟机安装宝塔修改账号密码安装软件创建站点上传程序创建多个链接网站组成 一、服务器 什么是服务器? 我…

25台服务器怎样支撑世界第54大网站

StackOverflow是一个IT技术问答网站&#xff0c;用户可以在网站上提交和回答问题。当下的StackOverflow已拥有400万个用户&#xff0c;4000万个回答&#xff0c;月PV5.6亿&#xff0c;世界排行第54。然而值得关注的是&#xff0c;支撑他们网站的全部服务器只有25台&#xff0c;…

华为云网站解析

来源&#xff1a;微信公众号「编程学习基地」 文章目录配置网站解析&#xff08;华为云注册域名&#xff09;操作流程步骤一&#xff1a;查看域名步骤二&#xff1a;为域名添加A记录集步骤三&#xff1a;为子域名添加A记录集配置网站解析&#xff08;华为云注册域名&#xff0…

码支付如何对接网站_扫码支付解决新方案——自助设备优先

前几天和朋友一起出去,在一个小摊贩哪里买东西,由于摊主的年纪较大,暂时不会弄二维码收款,我们出门又没带现金,所以我们只好到附近的自助售卖机上面去买饮料了。出乎意料的是附近的自助售卖机上面,竟然不支持二维码支付,还保留纸币和硬币的支付方式。小编很是吃惊!那么今天小编…

ourphp傲派企业建站系统如何对接短信功能?

OURPHP 可以快速、安全的开启一个大气、功能强大的企业网站,它不但可以帮助您的企业树立形象,还可以实现在您自已的官方网站上展开电子商务。OURPHP理论上支持创建世界上所有国家语言的网站&#xff0c;那么电商平台的短信功能如何接入呢&#xff1f;今天我们来分享下。 插件说…

python在线开发网站_Django开发在线教育网站1

Django的基本结构 现在&#xff0c;我们在使用Python进行网站开发的过程中&#xff0c;不可避免地会使用到Django框架&#xff1b;我们将从一个项目实战出发来熟悉Django整个开发的流程&#xff1b;便于让大家在项目开发的过程中&#xff0c;深入地理解Django的使用&#xff0c…

基于javaweb的黑马旅游网站来源_宁波成“春节旅游过年”黑马城市 这十个景区最热门...

用旅游的方式过年已成为新年俗&#xff0c;哪些城市是今年旅游过年的"黑马"&#xff1f;据携程最新发布的数据显示&#xff0c;宁波上榜“2020年旅游过年十大国内黑马城市”。同时入选的城市还有&#xff1a;丽水、福州、汕头、腾冲、宁蒗、兰州、长沙、沈阳。宁波为…

企业中小规模网站架构逻辑图

一、资源规划 服务器说明外网 IP(NAT&#xff09;内网 IP(NAT)主机名称规划nginx 负载服务器 01172.16.1.5lb01nginx 负载服务器 02172.16.1.6lb02nginx web 服务器172.16.1.7web01apache web 服务器172.16.1.8web02mysql 数据库服务器172.16.1.51db01NFS 存储服务器172.16.1.3…

访问页面要看什么数据包_SEO专员,为什么要经常访问百度搜索资源平台?

在做SEO的过程中&#xff0c;很长一段时间&#xff0c;大部分的站长都可能处于“自娱自乐”的状态&#xff0c;并且总是习惯性的按照自己的实战思维去评估自身网站的状态。这并没有什么问题&#xff0c;但我们经常会忽略一些“百度搜索”的搜索引擎优化指南&#xff0c;实际上&…