preload对比prefetch的功能区别详解

 更新时间:2022年06月30日 15:30:21   作者:天問  
这篇文章主要为大家介绍了preload对比prefetch的使用区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、前言

在使用@vue/cli工具构建的项目,打包上线之后,一般都能看到<link rel="preload">和<link rel="prefetch">这样的标签,对于preload与prefetch的作用和区别一直以来都不是太了解,所以文本就详细介绍一下。

想要了解preload与prefetch的作用和区别,就不得不先熟悉浏览器加载资源的优先级。

如图:

  • 其中HTML基本骨架结构和CSS的优先级最高
  • preload 使用 as 属性加载的资源将会获得与资源 “type” 属性所拥有的相同的优先级。比如说,preload as="style" 将会获得比 as=“script” 更高的优先级。
  • 不带 as 属性的 preload 的优先级将会等同于异步请求。

二、preload

2-1.定义:

  • <link>元素的 rel 属性的属性值preload能够让你在你的HTML页面中<head>元素内部书写一些声明式的资源获取请求,可以指明哪些资源是在页面加载完成后即刻需要的。
  • preload 提供了一种声明式的命令,让浏览器提前加载指定资源(加载后并不执行),需要执行时再执行。

2-2.好处:

  • 将加载和执行分离开,不阻塞渲染和document的onload事件。
  • 提前加载指定资源,不再出现依赖的font字体隔了一段时间才刷出的情况。

2-3注意:

  • 使用 preload 后,不管资源是否使用都将提前加载。若不确定资源是必定会加载的,则不要错误使用 preload,以免出现性能问题。
  • preload 有 as 属性,浏览器可以设置正确的资源加载优先级,这种方式可以确保资源根据其重要性依次加载, 所以,preload 既不会影响重要资源的加载,又不会让次要资源影响自身的加载;浏览器能根据 as 的值发送适当的 Accept 头部信息;浏览器通过 as 值能得知资源类型,因此当获取的资源相同时,浏览器能够判断前面获取的资源是否能重用。
  • 如果忽略 as 属性,或者错误的 as 属性会使 preload 等同于 XHR 请求,浏览器不知道加载的是什么,因此会赋予此类资源非常低的加载优先级。
  • 如果对所 preload 的资源不使用明确的 as 属性,将会导致二次获取。
  • preload加载font字体资源不带 crossorigin 也会二次获取。

2-4.特殊用法

  • preload 可以定义资源加载完毕后的回调函数,如下:
<link rel="preload" href="https://tiven.cn/js/test.js" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  as="javascript" onload="preloadHandle()">
  • 可以使用preload的样式表立即生效。
<link rel="preload" href="demo.css" rel="external nofollow"  onload="this.rel=stylesheet">
  • 对于加载跨域的资源,必须加上 crossorigin 属性。
<link rel="preload" as="style" crossorigin href="https://test.com/css/test.css" rel="external nofollow" >
  • link标签还可以接收一个media属性,进行简单的媒体查询。
<link rel="preload" href="https://tiven.cn/img/bg.png" rel="external nofollow"  as="image" media="(max-width: 640px)">

三、prefetch

3-1.定义:

<link>元素的 rel 属性的属性值prefetch能够让你在你的HTML页面中<head>元素内部书写一些声明式的资源获取请求,告诉浏览器加载下一页面可能会用到的资源,注意是下一页面,而不是当前页面。因此该方法的加载优先级非常低,也就是说该方式的作用是加速下一个页面的加载速度。

3-2.实例:

<link rel="prefetch" href="./js/01.js" rel="external nofollow" >
<link rel="prefetch" href="./js/02.js" rel="external nofollow" >

四、preload 和 prefetch 的区别

  • preload 是告诉浏览器页面必定需要的资源,浏览器一定会加载这些资源。
  • prefetch 是告诉浏览器页面可能需要的资源,浏览器不一定会加载这些资源。
  • 在VUE SSR生成的页面中,首页的资源均使用preload,而路由对应的资源,则使用prefetch。
  • 对于当前页面很有必要的资源使用 preload,对于可能在将来的页面中使用的资源使用 prefetch。

注意: 使用 preload 和 prefetch 的逻辑可能不是写到一起,但一旦发生对用一资源 preload 或 prefetch 的话,会带来双倍的网络请求。

<link rel="preload"   href="https://tiven.cn/js/test.js" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  as="javascript">
<link rel="prefetch"  href="https://tiven.cn/js/test.js" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  as="javascript">

以上就是preload对比prefetch的使用区别详解的详细内容,更多关于preload对比prefetch区别的资料请关注脚本之家其它相关文章!

相关文章

  • 使用van-picker 动态设置当前选中项

    使用van-picker 动态设置当前选中项

    这篇文章主要介绍了使用van-picker 动态设置当前选中项方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue实现带复选框的树形菜单

    vue实现带复选框的树形菜单

    这篇文章主要为大家详细介绍了vue实现带复选框的树形菜单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Vue项目全局配置页面缓存之按需读取缓存的实现详解

    Vue项目全局配置页面缓存之按需读取缓存的实现详解

    这篇文章主要给大家介绍了关于Vue项目全局配置页面缓存之实现按需读取缓存的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-08-08
  • 带你一步步从零搭建一个Vue项目

    带你一步步从零搭建一个Vue项目

    Vue.js是现在比较优秀的Web前端框架,非常推荐大家入门学习,这篇文章主要给大家介绍了关于如何一步步从零搭建一个Vue项目的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • vue elementUI 处理文件批量上传方式

    vue elementUI 处理文件批量上传方式

    这篇文章主要介绍了vue elementUI 处理文件批量上传方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue路由拦截器和请求拦截器知识点总结

    vue路由拦截器和请求拦截器知识点总结

    在本篇文章里小编给各位整理的是一篇关于vue路由拦截器和请求拦截器知识点总结文章,有兴趣的朋友们学习下。
    2019-11-11
  • vue2.x与vue3.x中自定义指令详解(最新推荐)

    vue2.x与vue3.x中自定义指令详解(最新推荐)

    vue自定义指令(2.x丨3.x)可以帮助我们实现需要操作,比如防抖、节流、懒加载、输入框自动聚焦等等,使用起来非常方便,比如vue自带的v-text、v-html、v-show、v-if等等,这篇文章主要介绍了vue2.x与vue3.x中自定义指令详解,需要的朋友可以参考下
    2022-12-12
  • vue element实现多个Formt表单同时验证

    vue element实现多个Formt表单同时验证

    这篇文章主要介绍了vue element实现多个Formt表单同时验证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • vite搭建vue2项目的实战过程

    vite搭建vue2项目的实战过程

    自从体验了一下vite之后,真的太快了,然而对vue3还不是很熟练,就想着在vue2的项目中使用以下vite,下面这篇文章主要给大家介绍了关于vite搭建vue2项目的相关资料,需要的朋友可以参考下
    2022-11-11
  • vue使用echarts实现中国地图和点击省份进行查看功能

    vue使用echarts实现中国地图和点击省份进行查看功能

    这篇文章主要介绍了vue使用echarts实现中国地图和点击省份进行查看功能,本文通过实例代码给大家详细讲解,对vue echarts 中国地图相关知识感兴趣的朋友一起看看吧
    2022-12-12

最新评论