preload 和 prefetch 的区别

575 阅读3分钟

在前端开发中,<link> 标签的 preloadprefetch 属性用于优化资源加载,提升页面性能。它们的主要区别在于资源加载的时机和目的。

preload

作用

preload 用于提前加载当前页面需要的关键资源,以便在资源实际使用时能够立即可用,从而减少加载时间和延迟。

使用场景

  • 关键资源:如字体、样式表、脚本、图片等,页面加载时立即需要的资源。
  • 提高首屏渲染速度:确保关键资源在页面渲染时已经加载完毕,提升用户体验。

示例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Preload Example</title>
  <link rel="preload" href="styles.css" as="style">
  <link rel="preload" href="script.js" as="script">
  <link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin="anonymous">
</head>
<body>
  <h1>Hello, World!</h1>
  <script src="script.js"></script>
  <link rel="stylesheet" href="styles.css">
</body>
</html>

解释

  • <link rel="preload" href="styles.css" as="style">:提前加载样式表 styles.css,并指定资源类型为 style
  • <link rel="preload" href="script.js" as="script">:提前加载脚本 script.js,并指定资源类型为 script
  • <link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin="anonymous">:提前加载字体 font.woff2,并指定资源类型为 font 和字体格式为 font/woff2

执行时机

preload 资源会在页面解析过程中立即开始加载,但只有在资源实际使用时才会执行。例如,预加载的脚本会在 <script src="script.js"></script> 标签解析到时执行。

prefetch

作用

prefetch 用于提前加载未来可能需要的资源,以便在用户导航到下一个页面或执行某个操作时能够快速加载资源,减少等待时间。

使用场景

  • 未来可能需要的资源:如下一页的图片、脚本、样式表等。
  • 提高导航速度:确保用户导航到下一个页面时,资源已经加载完毕,提升用户体验。

示例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Prefetch Example</title>
  <link rel="prefetch" href="next-page.html">
  <link rel="prefetch" href="next-page-styles.css" as="style">
  <link rel="prefetch" href="next-page-script.js" as="script">
</head>
<body>
  <h1>Hello, World!</h1>
</body>
</html>

解释

  • <link rel="prefetch" href="next-page.html">:提前加载 next-page.html,以便用户导航到下一页时能够快速加载。
  • <link rel="prefetch" href="next-page-styles.css" as="style">:提前加载下一页的样式表 next-page-styles.css
  • <link rel="prefetch" href="next-page-script.js" as="script">:提前加载下一页的脚本 next-page-script.js

执行时机

prefetch 资源会在浏览器空闲时加载,不会阻塞当前页面的渲染。资源加载完成后会被缓存,当用户导航到下一页或执行相关操作时,资源可以立即使用。

preloadprefetch 的区别

特性preloadprefetch
目的提前加载当前页面需要的关键资源提前加载未来可能需要的资源
执行时机页面解析过程中立即加载,实际使用时才执行浏览器空闲时加载,资源加载完成后缓存
使用场景提高首屏渲染速度,减少关键资源加载时间提高导航速度,减少未来页面加载时间
资源类型样式表、脚本、字体、图片等下一页的 HTML、样式表、脚本、图片等
对页面性能影响可能会增加页面初始加载时间,但提升首屏渲染速度不会影响页面初始加载时间,但可能增加带宽消耗
  • preload:用于提前加载当前页面需要的关键资源,提升首屏渲染速度。资源会在页面解析过程中立即加载,但只有在资源实际使用时才会执行。
  • prefetch:用于提前加载未来可能需要的资源,提升导航速度。资源会在浏览器空闲时加载,并在用户导航到下一页或执行相关操作时立即可用。

通过合理使用 preloadprefetch,可以优化页面加载性能,提升用户体验。