在 Web 应用程序中预加载图像的 5 种方法
随着 Web 应用的 API 越来越丰富,以及设备性能的提升,可以通过预加载图片来优化用户体验 (UX)。本文介绍了 Web 应用中预加载图片的几种方法。
原理
Web 应用程序基于 HTTP/HTTPS 运行。预加载涉及将网页所需的资源写入浏览器或磁盘缓存,以便页面在需要资源时直接从缓存中读取。
何时需要预加载
预加载在以下场景中特别有用:
- 通过用户交互打开带有背景图像的弹出窗口
- 在页面之间切换,由于需要加载新图像或未预加载时导致闪烁,因此可能很耗时
- 提前知道近期将需要特定的静态图像
- …
实现预加载
方法 1:<link preload>
“Preload” 是 <link>
元素的 rel 属性的关键字,表示浏览器应该预取并缓存资源,因为用户在当前浏览会话期间很有可能需要它。
示例:
1 | <head> |
在标头中插入一个 <link>
元素,其中包含 rel="preload"
、as="image"
和资源 URL 的 href
属性。可以使用 <link preload>
元素预加载多种类型的静态资源(有关更多信息,请参阅 as 属性文档)。
通过 JavaScript 实现预加载
1 | const preload = (src: string) => { |
对于 Next.js 用户,内置的 next/head
组件可以轻松修改 HTML 文档的标题。官方文档
1 | import Head from 'next/head' |
您可以将状态附加到链接或使用数组预加载多个图像资源,具体取决于您组织代码逻辑的方式。
在链接类型:预加载中了解有关预加载属性的规范和兼容性的更多信息。
方法 2:new Image()
预加载图像的一个更简单的方法是使用 new Image()
构造函数创建一个 <img />
元素。
1 | const preloadImage = (src: string) => { |
此代码紧急运行,在调用“preloadImage”时立即触发浏览器检索图像资源。
方法 3: XHR
与方法 2 类似,我们可以使用主动调用 XHR 预先加载资源。
1 | const preloadImage = (src: string) => { |
在这个例子中,我们没有对通过 XHR 检索的图像资源进行任何处理,但您可以使用 URL.createObjectURL()
来使用它。
方法 4: CSS
使用 CSS 加载资源需要使用 CSS。此方法不如上面列出的其他方法灵活。
当浏览器解析正在使用的静态资源的 CSS 规则时,它将自动加载资源。
1 | .example { |
方法 5: 不可见元素
在 HTML 中插入元素将触发浏览器解析其样式并加载任何所需的静态资源。
1 | const preloadImage = (src: string) => { |
以上就是我们对在 Web 应用程序中预加载图像的几种方法的介绍。我们希望它能帮助您改善 Web 应用程序的用户体验。