WEB图像优化

简介: 图像是网站或者WEB应用重要的组成部分,随着现在终端设备及5G的普及,用户对于图像的要求越来越高,为了提供更加速度体验,可以对图像进行优化。

图像是网站或者WEB应用重要的组成部分,随着现在终端设备及5G的普及,用户对于图像的要求越来越高,为了提供更加速度体验,可以对图像进行优化。

至于图像要不要优化,优化后的效果,可以通过在线工具 Cloudflare 来测试网站的效果,并对网站图像提出优化意见。

image.png

如何体验速度

每个浏览过网站的人都曾遇到过加载缓慢的网站。通常,这是由于该网页上的图像优化不当造成的,如图像太大等等。

页面上的图像可能需要很长时间才能加载,像素从上到下痛苦地填充;或者更糟糕的是,当浏览器了解它们的尺寸时,它们可能会导致页面布局发生巨大变化。这些问题对用户来说是一个很不友好的体验。

可以理解,缓慢的页面加载会对页面的“跳出率”产生不利影响,即快速离开页面的访问者的百分比。特别是在电子商务网站上来说,页面上的图像都比较多,处理不当,过高的跳出率将直接的影响收入。因此优化网页上的图像以减少来源的负载和输出,提高网站在搜索引擎排名中的表现并最终为用户提供出色的体验至关重要。

速度测试

自 2021 年 8 月以来,谷歌在考虑搜索结果排名时使用Core Web Vitals 来量化页面性能。衡量的因素侧重于加载速度、互动性和视觉稳定性方面的性能:

Largest Contentful Paint (LCP):即最大内容绘制,衡量加载性能。为了提供良好的用户体验,请尽力在网页开始加载的 2.5 秒内完成 LCP。First Input Delay (FID):即首次输入延迟,衡量互动性。为了提供良好的用户体验,请尽力将 FID 控制在 100 毫秒以内。Cumulative Layout Shift (CLS):即累积布局偏移,衡量视觉稳定性。为了提供良好的用户体验,请尽力使 CLS 得分低于 0.1

CLS 和 LCP 是可以通过优化图像来改进的两个指标。当 CLS 为高时,这表明大量页面布局在加载时正在移动。LCP 测量渲染视口中单个最大图像或文本块所需的时间。

这些都可以使用真实用户监控 (RUM) 分析(例如 Cloudflare 的 Web 分析)进行实时测量,或者使用Cloudflare 的图像优化测试工具在“实验室环境”中进行测量。

如何优化速度

网站开发者可以做出的最有影响力的性能改进之一是确保提供适当尺寸的图像。现代设备拍摄的图像分辨率都比较大,导致非常庞大。将将这些图像放到网页上会出现无法快速看到全部的问题。而有时无法限制用户使用图像的分辨率,通常可以通过程序对图像进行在线降低分辨率以降低大小,并为不同的终端配置不同分辨率的图像。

带有 srcset 和的媒体条件 sizes

在网页上插入图像时,通常是增加 img 标签,并为 src 设置图像路径:

<img src="hello_world_12000.jpg" alt="Hello, world!" />

从 2017 年开始,主流浏览器都支持更动态的 srcset 属性,允许开发者根据访问者浏览器的匹配媒体条件设置多个图像源,即为不同分辨率的终端配置不同分辨率的图像:

<img
    srcset="
        hello_world_1500.jpg   1500w,
        hello_world_2000.jpg   2000w,
        hello_world_12000.jpg 12000w
    "
    sizes="(max-width: 1500px) 1500px,
            (max-width: 2000px) 2000px,
            12000px"
    src="hello_world_12000.jpg"
    alt="Hello, world!"
/>

上面的代码通过 srcset 属性,告知浏览器图像有三种变化,每个变化具有不同的固有宽度:1500px2000px 和 原始 12000px 。然后浏览器评估 sizes 属性((max-width: 1500px) (max-width: 2000px))中的媒体条件,以便从 srcset 属性中选择适当的图像尺寸。如果浏览器的宽度小于 1500px,图片 hello_world_1500.jpg 则会被加载;如果浏览器的宽度在 1500px 和 2000px 之间,图像 hello_world_2000.jpg 则将被加载;最后,如果浏览器的宽度大于 2000px ,浏览器将加载原始图片 hello_world_12000.jpg

图像格式

过去推荐使用 JPEG、PNG、GIF、WebP,现在是 AVIF,AVIF 是具有广泛行业支持的最新图像格式,它的性能通常优于之前的格式。AVIF 支持具有 alpha 通道的透明度,并支持动画,并且它通常比 JPEG 小 50%(而 WebP 仅减少 30%)。

图像质量

与它们的前身 JPEG 不同,较新的图像格式(WebPAVIF)支持无损压缩。对于某些用途,无损压缩可能是合适的,但对于大多数网站来说,速度是优先考虑的,这种轻微的质量损失值得节省时间和字节数。

优化设置质量的位置是一种平衡行为:过于激进,图像上会出现伪影;太少,图像不必要地大。ButteraugliSSIM 是近似对图像质量感知的算法示例,但目前很难实现自动化,因此最好手动设置。然而,总的来说,发现在大多数压缩库中大约 85% 是合理的默认值。

图像标记

所有先前的技术都减少了图像使用的字节数。这对于提高这些图像的加载速度和最大内容绘制 (LCP) 指标非常有用。但是,要改进累积布局偏移 (CLS) 指标,必须尽量减少对页面布局的更改,这可以通过提前通知浏览器图像大小来完成。

在优化不佳的网页上,图像将在标记中没有尺寸的情况下加载。浏览器获取这些图像,并且只有在收到图像的标头字节后才能知道该图像的尺寸。效果是浏览器首先渲染图像占据零像素的页面,然后在实际加载图像像素本身之前突然使用该图像的尺寸重新绘制。这对用户来说是很不友好的,并且对可用性有严重影响。

在 HTML 标记中包含图像的尺寸非常重要,这样浏览器甚至可以在开始加载之前为该图像分配空间。可以防止不必要的重绘并减少布局偏移。甚至可以在动态加载响应式图像时设置尺寸:通过告知浏览器原始图像的高度和宽度,假设纵横比不变,即使使用宽度选择器,它也会自动计算正确的高度。

<img height="9000"
     width="12000"
     srcset="hello_world_1500.jpg 1500w,
             hello_world_2000.jpg 2000w,
             hello_world_12000.jpg 12000w"
     sizes="(max-width: 1500px) 1500px,
            (max-width: 2000px) 2000px,
            12000px"
     src="hello_world_12000.jpg"
     alt="Hello, world!" />

还有一个标记,就是延迟加载,为图像增加属性 loading="lazy" :

<img loading="lazy"   />

CDN加速

最直接的方式就是使用CDN加速,通过缓存及多线路的方式加速图像的加载。

总结

图像性能优化,对于图像使用比较多的网站来说还是很有必要的,可以通过 Cloudflare 的图像优化测试工具 、WebPageTest、Lighthouse 综合测试网站的关键指标。


相关文章
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
136 5
|
2月前
|
机器学习/深度学习 缓存 监控
利用机器学习优化Web性能和用户体验
【10月更文挑战第16天】本文探讨了如何利用机器学习技术优化Web性能和用户体验。通过分析用户行为和性能数据,机器学习可以实现动态资源优化、预测性缓存、性能瓶颈检测和自适应用户体验。文章还介绍了实施步骤和实战技巧,帮助开发者更有效地提升Web应用的速度和用户满意度。
|
2月前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
65 6
|
2月前
|
缓存 前端开发 JavaScript
探索现代Web开发中的前端性能优化策略
【10月更文挑战第5天】探索现代Web开发中的前端性能优化策略
|
2月前
|
缓存 前端开发 JavaScript
构建高性能Web应用:优化前端性能的策略
构建高性能Web应用:优化前端性能的策略
|
3月前
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
在快速发展的Web开发领域,高性能与高效响应是衡量应用质量的重要标准。随着Python在Web开发中的广泛应用,如何利用Python的协程(Coroutine)与异步函数(Async Functions)特性来优化Web应用的性能,成为了许多开发者关注的焦点。本文将从实战角度出发,通过具体案例展示如何运用这些技术来提升Web应用的响应速度和吞吐量。
34 1
|
3月前
|
缓存 负载均衡 前端开发
优化Web应用性能的十种策略
在当今的数字化时代,Web应用的性能直接影响用户体验和业务成效。本文深入探讨了优化Web应用性能的十种策略,从前端的资源优化到后端的架构改进,涵盖了缓存机制、异步加载、数据库优化等关键技术手段。这些策略不仅能提升响应速度,还能显著减少服务器负担和带宽消耗,为开发者提供了一系列切实可行的解决方案。
|
3月前
|
网络协议 Windows
[收藏]优化基于Win 2000系统的Web服务器性能
[收藏]优化基于Win 2000系统的Web服务器性能
|
4月前
|
缓存 安全 前端开发
【性能大逆袭】Web2py应用如何从龟速变飞快?六大优化秘籍让你的应用焕然一新!
【8月更文挑战第31天】Web2py是一款备受欢迎的全栈Python Web框架,以其内置的数据库抽象层和安全特性著称。然而,随着应用规模的扩大,性能瓶颈逐渐显现。本文通过对比分析,从代码层面(如减少数据库查询、避免全局变量)到部署策略(如静态文件压缩、CDN加速、选择合适数据库、优化查询、异步处理),全面介绍Web2py应用的性能优化方法及其应用场景。通过具体示例,展示了如何创建并优化一个简单的Web2py应用,旨在帮助开发者构建高效稳定的Web应用。
63 2
|
4月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
61 1
下一篇
DataWorks