Web 性能入门指南-3.1 图片优化最佳实践

有人说一张图片胜过千言万语。不幸的是,下图也会占用 1,000 KB 的空间。图像是提供丰富、用户友好的在线体验的重要组成部分。优化图像的加载方式和重量至关重要 - 确保您的精美图像不会影响您的页面速度。

https://blog-img.speedcurve.com/img/497/image-optimization.gif?auto=format,compress&fit=max&w=2000

提供合适的图片尺寸

如果您只做一件事来优化您的图片,那么应该确保您的图片大小合适,这样您就不会提供任何大于必要大小的图片。网络上到处都是比需要大得多的图片。

如果您的目标屏幕分辨率较高,则以 100px x 100 像素显示的图像理想情况下应为 200px 宽和 200px 高;如果您的目标屏幕分辨率较低,且为低端设备,则图像应尽可能接近 100px x 100px。

srcset您可以通过使用和属性的某种组合来确保显示正确尺寸的图像sizes

源码

srcset属性允许您向浏览器提供图像源列表。然后浏览器将根据图像的大小和屏幕的分辨率选择最合适的图像。

例如,使用上面的示例,如果我们有一张以 100px x 100px 显示的图像,我们可以创建该图像的两个版本 - 一个是 100px x 100px,另一个是 200px x 200px。然后我们可以像这样将每个图像源提供给浏览器:

<img
  width="100"
  height="100"
  src="our-image-100.jpg"
  srcset="our-image-100.jpg 1x, our-image-200.jpg 2x"
 />

此代码片段告诉浏览器该图像有两个可能的来源,对于低分辨率显示器(1x),它应该使用 100px 图像,而对于高分辨率显示器(2x),它应该使用 200px 图像。

尺寸

如果我们的图像始终以 100px x 100px 显示,则前面的示例srcset非常适合。但是,我们可能经常想要更改图像的显示方式(例如:在大屏幕上,它可能是一个更大的关键图像,但在小屏幕上,它可能是一个小得多的文章标题)。

在这种情况下,srcset单靠这个还不够。相反,我们必须使用属性sizes来告诉浏览器图像的显示尺寸。

例如,我们可以稍微扩展一下前面的代码片段:

<img
  width="100"
  height="100"
  src="our-image-100.jpg"
  srcset="our-image-100.jpg 1x, our-image-200.jpg 2x"
  sizes="(min-width: 60em) 100vw, 100px"
 />

现在我们告诉浏览器,如果屏幕宽度至少为 60em,则图像将以 100 倍视口宽度(100%)显示。在较小的屏幕上,它将以 100px 显示。

现在,浏览器已经拥有根据显示器的尺寸和分辨率选择正确尺寸图像所需的所有信息。

使用正确的格式

图像文件格式有很多种,每种格式都有不同的存储图像组成信息的方式,以及不同的压缩信息的方式。使用适当大小的图像后,选择正确的格式是下一个最重要的决定。

虽然人们不断尝试新的图像格式,但您应该了解以下主要格式:

  • JPEG: JPEG 是网络上最常见的图像格式,适用于摄影图像,但 WebP 和 AVIF 等新格式具有更好的压缩率,从而可以压缩出更小的图像尺寸。

  • PNG: PNG 格式的图像保真度比 JPEG 格式高得多,并且可以支持透明度。但是,保真度的提高是以文件大小为代价的,因此您需要确保使用 ImageOptim 或 Squoosh 等工具压缩您使用的所有 PNG。您还应避免将 PNG 格式用于详细的摄影图像。

  • WebP: WebP 格式的内置压缩效果比 PNG 和 JPEG 格式好得多,现在得到广泛支持。在大多数情况下,它可能比 PNG 和 JPEG 更好。

  • AVIF: AVIF 格式是另一种较新的格式,其压缩率远高于 JPEG 和 PNG,并且通常比 WebP 格式的压缩率更高。由于它较新,因此您应确保为尚不支持该格式的旧版浏览器提供后备格式。

  • SVG: SVG 格式是一种矢量格式(也就是说,它存储的是有关如何重新创建图像的指令,而不是图像数据本身),因此压缩效果极佳。它最适合用于简单的图像,但是,由于图像越详细,显示时必须提供的指令就越多。此格式非常适合图标和徽标,并可在不同的分辨率显示器上自动缩放。

无论使用哪种格式,您都需要确保图像压缩良好。您可以使用Squoosh等工具手动执行此操作,但对于较大的网站和更简单的长期维护,您需要使用 CDN 或专用图像服务来为您处理适当的大小、压缩和文件格式。

对非关键图像应用延迟加载

一个页面上可以有很多图片,但并非所有图片都同等重要。优先级较低的图片(最初隐藏或在初始视口显示之外的图片)在早期请求时并不那么重要,应该延迟加载(在页面初始加载后加载,仅在需要时加载)。确保仅在需要时加载这些图片可以释放网络以用于更重要的资源。

loading我们可以通过使用元素上的属性来帮助浏览器更明智地决定如何加载图像img

loading属性告诉浏览器如何积极地加载特定图像,并受到所有主流浏览器的支持。

该属性有两个可能的值loading

  • eager这会告诉浏览器立即加载图像(这是属性的默认值)

  • lazy这会告诉浏览器等待加载图像,直到它几乎进入视图范围(确切的距离因浏览器而异,在某些情况下,也因网络连接而异)。

对于关键图像,我们可以选择使用该eager值来告诉浏览器该图像很重要,需要立即加载:

<img loading="eager" src="my-hero.png" />

对于页面下方的图像,我们会告诉浏览器等待加载这些图像,直到需要它们为止:

<img loading="lazy" src="later-image.jpg" />

注意:延迟加载图像过去需要 JavaScript,您仍会看到许多网站和示例使用 JavaScript 来实现此目的。现在我们有了原生浏览器支持的延迟加载图像的方式,但是,使用 JavaScript 来延迟加载图像通常是不必要的,而且在大多数情况下是一种反模式。

确保图像具有尺寸属性

当图像要在屏幕上显示时,浏览器必须确定图像将占用多少空间,以便可以重新排列页面上的其余内容。

在图片下载完成并计算样式之前,浏览器唯一能判断要保留多少空间的方法是查看图片上的heightwidth属性。如果缺少这些属性,浏览器最初不会为图片保留任何空间。然后,当图片到达时,浏览器将不得不重新排列内容以腾出空间给图片,从而导致布局偏移。

尽可能确保在图像上包含height和属性以避免布局转变。width

<img src="my-image.png" height="100" width="100" />

height和属性width不必是图像的精确尺寸,甚至不必是图像的精确显示尺寸。只要尺寸成比例,浏览器就能保留正确的空间量。

例如,最终将以 1000px x 500px 显示的图像可以安全地赋予height500pxwidth和 250px 的属性。

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: "OIF-CEI-3.1" 是 OIF (Optical Internetworking Forum) 的一项协议规范,用于描述与光网络有关的特定功能和要求。OIF 是一个国际性组织,致力于推动光网络的发展和标准化。而 CEI (Common Electrical Interface) 是指在光纤通信系统中使用的一种电子接口标准。 OIF-CEI-3.1 是 OIF 为了提高光纤通信系统的传输效率而制定的一项技术规范。它旨在提供一种高速、可靠的电子接口标准,促进光纤通信系统的互操作性和可扩展性。 OIF-CEI-3.1 的主要特点和功能包括以下几个方面: 1. 高速传输:OIF-CEI-3.1 支持高达100 Gbps的数据传输速率,能够满足现代光纤通信系统对大带宽的需求。 2. 低功耗:OIF-CEI-3.1 的设计考虑了功耗优化,提供了节能的通信解决方案,有助于减少电力消耗和碳排放。 3. 信号完整性:OIF-CEI-3.1 提供了一套严格的电信号传输要求,包括时钟回复、抖动控制等,确保数据传输的可靠性和稳定性。 4. 灵活性和可扩展性:OIF-CEI-3.1 支持多种传输模式和物理层配置,能够适应不同的光纤通信场景和需求。 5. 互操作性:OIF-CEI-3.1 是一个开放的标准化协议,减少了不同供应商之间的兼容性问题,提高了设备之间的互操作性。 总的来说,OIF-CEI-3.1 是一个重要的光纤通信标准,旨在推动高速、低功耗、可靠的光纤通信系统的发展。它提供了一套规范和要求,使得不同设备和技术能够互相配合和兼容,为光网络的部署和应用提供了良好的支持。 ### 回答2: OIF-CEI-3.1是一种光学互连框架的标准,旨在通过提供高速、高效、互操作的光纤通信解决方案来促进光学层面的互连技术的发展。它定义了光学模块之间的接口标准,以确保不同供应商的光学设备能够无缝地协同工作。 OIF-CEI-3.1标准主要关注的是高速数据传输,它通过制定规范来确保光学设备之间的兼容性和稳定性。这有助于降低系统集成的复杂性,提高系统的性能和可靠性。 OIF-CEI-3.1标准支持多种传输速率,包括10、25、50和100 Gbps。它定义了物理层接口的电气规范、引脚功能和信号传输特性。这使得不同厂家的设备可以在相同的速率下相互连接,加强了市场竞争力,降低了用户的成本。 该标准还考虑了功耗的问题,通过优化设计和算法,减少了设备的能耗。此外,OIF-CEI-3.1也关注了时钟和时序的同步问题,确保数据的可靠性和稳定性。 总之,OIF-CEI-3.1标准是光纤通信领域的重要标杆,它推动了光学互连技术的发展,提高了系统的性能和可靠性。用户可以在不同供应商间选择适合自己需求的设备,并且能够在不同速率下进行互连,提高了系统的灵活性并降低了成本。 ### 回答3: OIF-CEI-3.1是光互操作性论坛(OIF)制定的一种光纤连接接口规范。OIF是一个国际组织,旨在推动和发展光纤通信技术的互操作性。OIF-CEI-3.1规范主要用于高速串行数据传输,如数据中心、互联网交换机等领域。 OIF-CEI-3.1规范通过定义高速信号传输时的电气特性和接口标准,确保不同厂商生产的设备之间能够正常互联。该规范对信号的传输速率、电压、时钟恢复等关键参数进行了详细说明,以确保数据传输的可靠性和稳定性。 OIF-CEI-3.1规范在技术上有一些改进和更新,以适应不断增长的数据传输需求。其中包括更高的传输速率、更低的功耗和更好的时钟恢复性能等。这些特性对于数据中心等应用领域来说十分重要,因为它们需要高速、可靠的数据传输,并且要尽可能降低功耗。 OIF-CEI-3.1规范的实施对于光纤连接技术的发展和应用有着积极的意义。它提高了设备之间的互操作性,降低了不同厂商设备之间的兼容性问题,促进了市场竞争和创新。此外,它还为数据中心等应用场景提供了更快速、更可靠的数据传输解决方案。 总之,OIF-CEI-3.1规范是一个具有重要意义的光纤连接接口标准,它通过定义电气特性和接口标准,确保高速数据传输的可靠性,推动了光纤通信技术的发展和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端后花园

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值