网站优化Preload进行预加载的使用方法

2024-01-01 14:01:26
By 向神讨好

<link>元素的 rel 属性的属性值preload能够让HTML页面中 <head>元素内部书写一些声明式的资源获取请求,使得资源可以更早的得到加载。

<link rel="stylesheet" href="style2.css">
<script src="main2.js"></script>

<link rel="preload" href="style1.css" as="style">
<link rel="preload" href="main1.js" as="script">

在这里,我们会先加载style1.cssmain1.js文件(但不会生效),在随后的页面渲染中,一旦需要使用它们,它们就会立即可用。


哪些类型的内容可以被预加载?

许多不同类型的内容都可以被预加载,一些主要可用的as?属性值列举如下:

  • audio: 音频文件。
  • document: 一个将要被嵌入到或内部的HTML文档。
  • embed: 一个将要被嵌入到元素内部的资源。
  • fetch: 那些将要通过fetch和XHR请求来获取的资源,比如一个ArrayBuffer或JSON文件。
  • font: 字体文件。
  • image: 图片文件。
  • object: 一个将会被嵌入到元素内的文件。
  • script: JavaScript文件。
  • style: 样式表。
  • track: WebVTT文件。
  • worker: 一个JavaScript的web worker或shared worker。
  • video: 视频文件。

媒体查询

<link>元素有一个很棒的特性是它们能够接受一个media作为属性值,这将令你能够使用响应式的预加载

<link rel="preload" href="narrow.png" as="image" media="(max-width: 600px)">
<link rel="preload" href="wide.png" as="image" media="(min-width: 601px)">

跨域获取

通过添加crossorigin="anonymous"支持跨域,对于字体文件是个特例,无论何时,字体文件都需要添加该属性

<link rel="preload" href="fonts/cicle_fina-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">

其他资源预加载机制

  • <link rel="prefetch">?已经被许多浏览器支持了相当长的时间,它是意图预获取一些资源,以备下一个导航/页面使用。这很好,但对当前的页面并没有什么助益。此外,浏览器会给使用prefetch的资源一个相对较低的优先级——与使用preload的资源相比。
    查看Link prefetching FAQ可以了解更多细节。

(本文内容根据网络资料整理和来自用户投稿,出于传递更多信息之目的,不代表本站其观点和立场。本站不具备任何原创保护和所有权,也不对其真实性、可靠性承担任何法律责任,特此声明!)


常见问答(FQAS)


为什么要使用Preload进行预加载?

预加载资源可以减小首次请求文件大小,缩短可交互时间。有效利用预加载可以加速页面加载速度,提升用户体验。

如何使用link rel=\"preload\"预加载资源?

使用<link rel=\"preload\">标签在页面首次加载时提前加载要用到的资源,其中必须设置as属性表示资源类型,如as=\"script\"或as=\"style\"。此外,它支持preload和prefetch两种对应用的影响程度不同。

link rel=\"preload\"的优势是什么?

使用预加载技术,可以让浏览器在页面渲染之前预先加载必需的资源,这样当需要使用这些资源时它们就会立即可用,而不必等待加载,大大缩短了首次内容渲染时间。相比prefetch,preload具有更高优先级,能够实现更好的流畅体验。

使用preload后页面速度有多快?

正确使用Preload可以使页面首次绘制时间(TTFB)缩短10%-50%,页面完全加载时间(load event)缩短5%-10%。速度提升的多少依赖于被预加载资源的体积大小和所占用的带宽。一般来说,预加载几个关键的上百kb的JavaScript或CSS文件可以明显感受到速度的提升。

No Tags