WordPress 5.4 将内置图片延迟加载功能

多年来,延迟加载图像一直是一种显着提高页面加载性能的常用机制。仅仅WordPress系统,就有无数启用延迟加载的插件。

一直以来的延迟加载图像一般都是基于JavaScript来实现,直到最近Google团队新推了一种本机Web解决方案,该解决方案仅仅需要在 img 标签中添加loading属性就可以生效,并提供了标准化的用户体验,不再需要添加js代码。目前loading属性的HTML规范已接近尾声,并且已经被包括Chrome和Edge在内的多个浏览器所支持

早在两年前就提出了在WordPress内容中启用图像的延迟加载的方法,但是当时的JavaScript实现可能会导致一些问题和兼容情况。但是现在使用新的 loading属性就可以消除这些顾虑。

性能影响

根据HTTPArchive的说法,图像是大多数网站要求最多的文件类型,通常比其他任何资源占用更多的带宽。在第90个百分点,网站在台式机和移动设备上发送大约4.7 MB的图像。

Web的本机延迟加载,web.dev

如果不进行延迟加载,则会立即加载网页上的所有图像。这会严重损害性能,尤其是在包含许多图像的页面上。如果其中有几幅图像位于“可视界面之下”,即用户没有立即看到的页面部分,就不需要立即加载这些图像,而应该等到用户向下滚动才加载图片。

由于延迟加载已成为提高性能的重要举措,因此新的 loading属性规范旨在标准化行为并将其更快地集成到Web平台中。

如果WordPress默认情况下启用本机延迟加载功能,它将极大地影响数百万个站点的性能和用户体验,而无需任何技术知识,甚至无需了解延迟加载的概念。采用新的加载属性对于WordPress来说是一次带动整体网站更快的机会。

技术方案

该loading属性当前支持两个可能的值:

eager,在页面加载时立即加载所有图片

lazy,仅在与可视部分才加载图片

该实现方案尝试在默认情况下启用延迟加载图像,并在以下标记上为loading属性设置值:lazyimg

文章内容中的图片

摘要中的图片

评论中的图片

小工具内容中的图片

通过 wp_get_attachment_image() 渲染的单个图片

通过 get_avatar() 呈现的头像图片

请注意,loading=”lazy”只有在相应标签尚未包含 loading 属性时,才会添加该标签。换句话说,为了防止图像被延迟加载,建议指定loading=”eager”。