延迟加载意味着等到用户或浏览器需要时再在网页上呈现内容。延迟加载有助于加快网页加载速度。
阅读本文后,您将能够:
相关内容
订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!
复制文章链接
延迟加载是一种等到需要时再加载网页的某些部分(尤其是图像)的技术。浏览器不会一次加载所有内容(称为“急切”加载),而是在用户以需要某资源的方式进行交互之前不请求该资源。如果实施得当,延迟加载可以加快页面加载时间。
这种类型的加载被称为“延迟”,因为它鼓励网络浏览器拖延。当显示延迟加载网页时,浏览器本质上会说,“我将等待真正需要的时候再加载这些图像。” 当显示一个急切加载的网页时,浏览器采取相反的态度:“我会马上处理一切!” 虽然拖延有时在现实世界中带有负面含义,但在这种情况下,它通常更有效。
例如,一篇博客文章可能在页面顶部有一张图片,在底部附近有一张图表。阅读博客文章的人可能会在几分钟内到达文本底部,因此浏览器会等到读者滚动到该部分时再加载图表。这样,页面一开始加载得更快,因为浏览器加载的是一张图片而不是两张。
用户导航通常延迟加载图像的触发点。特别是,当用户在页面上向下滚动时,这会告诉浏览器加载出现在那里的图像。
网页加载时,用户看到的部分称为“首屏”,而用户尚未看到的部分称为“非首屏”。*首屏图片需要立即加载, 否则会影响用户体验。但是用户在向下滚动之前不会看到非首屏图片。因此,非首屏图片可以使用延迟加载。
*“fold”(对折线)是什么意思?“首屏”和“非首屏”起源于报纸版面。报纸通常水平对折,前半部分(对折线上方的区域)是读者首先看到的。当该术语应用于 Web 布局时,“对折线”是用户屏幕的底部。
实现延迟加载的一种方法是在图像标签中使用 HTML 属性加载。添加 loading="lazy"
,如下例所示,告诉浏览器等到用户滚动靠近它时再加载图像:
<img src="example.com/image" alt="example image" width="100" height="100" loading="lazy">
Web 开发人员还可以使用编程框架来实施更复杂的延迟加载。Angular 通常用于此目的。JavaScript 库 React 也支持延迟加载。
Cloudflare Mirage 是另一种实现延迟加载的方式。除了自动调整图像大小外,Mirage 还充当延迟加载器,仅按需加载图像。Cloudflare Mirage 功能适用于 Pro 和 Business 自助服务方案的 Cloudflare 客户,以及 Enterprise 客户。
media
属性来告诉浏览器何时加载它们(了解更多)。loading
属性。更快的页面加载:在其他条件相同的情况下,文件较小的网页加载速度更快。使用延迟加载,网页开始时会小于其完整大小,因此加载速度更快。快速的 Web 性能有很多好处,包括更好的 SEO、更高的转化率和更好的用户体验。
没有不必要的内容:假设页面加载了多个非首屏图像,但用户在向下滚动之前退出了页面。在这种情况下,用于传递图像的带宽以及浏览器请求和渲染图像所花费的时间基本上都被浪费了。相反,延迟加载确保这些图像仅在必要时加载。这节省了时间和处理能力,并且可以为网站所有者节省资金,因为使用的带宽更少。
用户请求资源的速度可能比预期的快:例如,如果用户快速向下滚动页面,他们可能需要等待图片的加载。这可能对用户体验产生负面影响。
与服务器的额外通信:当用户与页面交互时,浏览器可能不得不向网站的服务器发送多个内容请求,而不是一次请求所有页面内容。使用内容分发网络 (CDN) 可以最大限度地减少这种潜在的缺陷,因为图像由 CDN 缓存,并且浏览器不必一直向源服务器发送请求来获取它们。
浏览器需要处理额外代码:如果开发人员在网页中添加几行 JavaScript 来告诉浏览器如何延迟加载页面资源,这会增加浏览器必须加载和处理的代码量。如果效率低下,这种轻微的额外加载和处理时间可能会超过延迟加载所节省的时间。
急切加载是同时或尽快加载所有网页资源。某些使用急切加载的应用程序可能会显示“正在加载”屏幕。复杂、代码量大的 Web 应用程序(例如在线游戏)可能更喜欢使用预加载。
许多因素会影响 Web 性能,但以下三个步骤是使网站速度更快的良好起点:
查看提高网页性能的更多方法:提高网站速度的技巧