webpack配置preload和prefetch预加载技术

news/2024/12/15 18:25:57/

我们前面已经做了代码分割,同时会使用 import 动态导入语法来进行代码按需加载(我们也叫懒加载,比如路由懒加载就是这样实现的)。

但是加载速度还不够好,比如:是用户点击按钮时才加载这个资源的,如果资源体积很大,那么用户会感觉到明显卡顿效果

要优化这种情况,可以使用preload和prefetch技术

一、什么是preload和prefetch

PreloadPrefetch是两种优化前端性能的技术,它们可以让浏览器在某些条件下提前加载一些资源,从而加快应用程序的加载速度。

Preload指的是在页面加载时预加载一些关键资源,这些资源在接下来的页面操作中会立即用到Preload可以使用rel="preload"属性来实现,比如:

<link rel="preload" href="path/to/resource" as="type"/>

其中,

  • href表示需要预加载的资源路径
  • as属性指定预加载资源的类型

相比之下,Prefetch在页面加载后不紧急需要但将来可能需要使用的资源进行预加载Prefetch的实现方式是通过添加rel="prefetch"属性来实现,例如:

<link rel="prefetch" href="path/to/resource"/>

这里

  • href表示需要预加载的资源路径。

需要注意的是,Preload和Prefetch不是浏览器强制加载资源,而是给浏览器提供了一些提示,让它在空闲时间主动加载一些资源,从而提升应用程序的性能体验

下面是一个Preload例子,假设我们有一个应用程序需要用到moment.js库,我们可以将moment.js资源进行预加载:

<head><link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js" as="script" />
</head>

这样,当我们在应用程序中需要用到moment.js库时,它就已经提前被加载出来了,从而避免了因为浏览器加载缓慢而导致的性能问题

二、在webpack中配置使用

  1. 下载

npm i @vue/preload-webpack-plugin -D

  1. 配置
const PreloadWebpackPlugin = require("@vue/preload-webpack-plugin");
plugins: [new PreloadWebpackPlugin({rel: "preload", // preload兼容性更好as: "script",// rel: 'prefetch' // prefetch兼容性更差}),
]

配置完成之后我们进行生产打包

npm run build

在这里插入图片描述

如上图可以看到我们的公共chunk已经使用prealod方式引入到index.html中了。
在这里插入图片描述
并且他的priority是最低的。

值得注意的是这两项技术它们的兼容性不是很好
查看兼容性网站:https://caniuse.com/?search=preload

  • preload
    在这里插入图片描述
  • prefetch
    在这里插入图片描述

http://www.ppmy.cn/news/450721.html

相关文章

指纹考勤机使用说明

指纹考勤机使用说明 一、指纹考勤机特点及主要功能分析 1、指纹考勤机特点 指纹考勤具有识别速度快、准确、方便等特点&#xff0c;让考勤实现智能化。但使用中受限于指纹膜的寿命&#xff0c;高端机指纹考勤机在这方面有做改进突破。 指纹识别系统是通过特殊的光电转换设备和计…

遥感数字图像处理教程复习整理

目录 01 说明 遥感影像的存储方式 BSQ方式 BIL方式 BIP方式 如何计算图像存储空间大小(字节数)&#xff1f; 简单的单位换算 计算公式 简单地 复杂地 如何查看影像的基本信息/辅助信息&#xff1f; 如何进行直方图的阈值分割&#xff1f; 辐射校正 系统辐射校正 …

DLC430SK考勤机接线方法

DLC430SK考勤机接线方法 1、考勤机对外接口如图所示: 其中外部电源接口可接随机赠送的电源&#xff0c;也可接其它9&#xff5e;12V&#xff0c;1A的电源&#xff0c;注意极性为内外-; 考勤机可用TCP&#xff3c;IP、RS-232、RS-485或SD卡与电脑通讯&#xff0c;连接方法如下…

考勤机使用说明书

1&#xff0e;把考勤机通电&#xff0c;打开机器&#xff0c;使机器处于正常工作状态。2&#xff0e;在考勤机操作面板上按主菜单 [MENU] – [用户管理] – [用户登记] – [指纹登记]&#xff0c;屏幕提示“新登记&#xff1f;” &#xff0c;按 [OK]键&#xff0c;这个时候要输…

java连接带通讯密码的中控考勤机 iface702

java连接带通讯密码的中控考勤机 iface702 java连接中控考勤机导入jacob.jar 1.19版本jacob-1.19-x86.dllzkemkeeper.dll考勤机连接代码iFace系列脱机通讯开发包开发手册 java连接中控考勤机 jdk1.8 32位 文章资源 https://download.csdn.net/download/weixin_47881155/161…

Verilog | 基4 booth乘法器

上接乘法器介绍 原理 跟基2的算法一样&#xff0c;假设A和B是乘数和被乘数&#xff0c;且有&#xff1a; A ( a 2 n 1 a 2 n ) a 2 n − 1 a 2 n − 2 … a 1 a 0 ( a − 1 ) B b 2 n − 1 b 2 n − 2 … b 1 b 0 \begin{align}A&(a_{2n1}a_{2n})a_{2n−1}a_{2n−2}……

Python入门(二十四)异常(一)

异常&#xff08;一&#xff09; 1.概述2.处理ZeroDivisionError异常3.使用try-except代码块4.使用异常避免崩溃 1.概述 Python使用称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时&#xff0c;它都会创建一个异常对象。如果你编写了处理该…

Comet OJ - Contest #10 C.鱼跃龙门

传送门 题意&#xff1a; 求最小的\(x\)&#xff0c;满足\(\frac{x(x1)}{2}\% n0,n\leq 10^{12}\)。 多组数据&#xff0c;\(T\leq 100\)。 思路&#xff1a; 直接考虑模运算似乎涉及到二次剩余什么的&#xff0c;但比较复杂。注意到比较特殊的就是&#xff0c;最后结果为\(0\)…