WordPress 6.7 新特性:为延迟加载自动设置图片尺寸

作者:Ting

更新于:2024年11月12日 22:06

WordPress 6.7 新特性:为延迟加载自动设置图片尺寸

WordPress 6.7 引入了一项全新功能——为延迟加载(lazy-loaded)自动设置图片尺寸。该特性基于 HTML 规范中的新增功能,使浏览器在选择 srcset 列表中的图片源时,可以使用图片的实际渲染宽度进行判断。此改进使得延迟加载的图片在布局确定后才加载时,能够更精确地调整尺寸。

背景介绍

早在 WordPress 4.4 版本,响应式图片属性 srcsetsizes 已被引入。根据官方开发者笔记:

设置合理的 sizes 值在选择 srcset 中的合适图片时至关重要,它可以在布局加载前告知浏览器图片的预期布局。如果未设置此值,浏览器将使用 100vw 作为默认值,假定图片应填满整个视口宽度,可能会导致加载不必要的多余数据。多年来,WordPress 的默认值已优化为限制图片布局在其 width 属性范围内,从而减少数据浪费。然而,对于一些布局受到内容宽度或嵌套块限制的情况,默认值的准确性仍有待提升。

尽管主题开发者被鼓励使用 wp_calculate_image_sizes 来提供更精准的 sizes 值,但这在实际操作中可能面临一定挑战。如今,浏览器能自动为延迟加载图片应用准确的渲染布局宽度,确保 sizes 值完全匹配布局,从而显著减少不必要的流量消耗。

实施细节

根据 HTML 规范,延迟加载图片可以省略 sizes 属性,或设置 sizes="auto",或以 "auto," 开头的字符串,后跟有效的源大小列表。作为对支持此功能的浏览器的渐进增强,WordPress 会在 wp_filter_content_tags() 函数中,或通过 wp_get_attachment_image() 生成的图片标签中,将 auto 前缀添加到内容图片的 sizes 属性。这一做法确保不支持 auto 值的浏览器会回退到原有的 sizes 列表,从而保持兼容性。

WordPress 仅在图片包含 loading="lazy" 时才会向 sizes 属性添加 auto。否则,支持 sizes=auto 的浏览器会忽略 sizes 值并使用默认 100vw,导致选取过大的图片。任何在 WordPress 生成标记后自定义图片加载的实现,应调用新的 wp_img_tag_add_auto_sizes() 函数来确保 sizes 属性的正确性。

新增功能概览

  • wp_img_tag_add_auto_sizes – 用于为 HTML img 字符串添加自动尺寸。
  • wp_sizes_attribute_includes_valid_auto – 检查图片上是否已有 auto 属性,以避免重复添加。

总结

WordPress 6.7 的这一更新显著提升了图片加载效率,减少了不必要的数据传输,从而改善了用户体验。随着技术的进步,WordPress 持续优化和更新,力求适应现代网络环境的需求,为开发者和用户提供更智能的体验。

不过需要注意的是 WordPress 自动实施的延迟加载是基于浏览器的,如果浏览器不支持,则图片延迟加载无效。更多详情可参考:深入解析 WordPress 的 loading=”lazy” 与 JavaScript 延迟加载技术

原文出自:Auto Sizes for Lazy Loaded Images in WordPress 6.7

© 版权声明

本文由站长帮(zhanzhangb.cn)发布,保留所有权利。

未经明确书面许可,不得转载、摘编本站内容。对于侵权行为,我们将保留追究法律责任的权利。