我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vite性能优化之分包策略的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vite性能优化之分包策略的实现

为什么需要分包策略?

还是举个例子,来回忆一下吧,什么呢?
比如说,我使用了 loadsh.js 的东西,那么我们在打包的时候,就会把 loadsh 相关资源也会打包进来,这个是没有问题的,此时是将 loadsh 的东西 与 我们自己写的相关代码合成一个文件,记住是一个文件。
浏览器是有缓存机制的,当每一次去请求的文件资源时 ( 文件名是没有发生改变的时候,就会读取内存中的数据,而不会重新去服务器获取 )。
分包,我的理解,就是将第三方资源文件单独打成一个文件,自己写的代码打成另一个文件

如果我们不进行分包
我们每一次修改代码之后,进行打包,结果这个文件的内容有 :第三方资源包代码 + 我们自己写的业务代码。
而且,这个文件的名字,每一次都会发生变化的(源代码发生变化),所以当用户去访问我们的页面时,请求的资源文件内容有 : 第三方资源包代码 + 自己的业务代码,而真正需要跟新的只有 自己的业务代码,导致每一次,请求的js文件体积都很大,所以响应时间会长一些

浏览器的缓存策略

浏览器在请求静态资源时,只要静态资源的名称不变,它就不会重新请求 xxx.js资源。

使用Vite打包后的js文件是带有哈希值的,只要我们的代码内容有一点点变化,那么文件的hash值都会变化。

我们初始化一个项目,安装vite进行演示

npm init -y
npm i vite -D
// main.js中写一点逻辑
const mainArr = []

打包

更改main.js中的逻辑然后重新打包

// 更改main.js中的逻辑
let mainArr = []

可见,项目中任何业务代码更改后,文件的hash值都会改变,重新部署代码后,浏览器都会重新请求资源文件。

基于这种策略,服务器往往存在不必要的性能浪费。

浏览器缓存策略的不足

假设我们的项目修改了一点点业务逻辑,每次 打包发布后,由于打包的文件名发生了改变,浏览器都会重新请求这个js文件。

看个示例:

我们引入lodash,然后main.js中写入一点逻辑。

import { forEach } from "lodash"
const mainArr = []
forEach(mainArr,(ele) => {
  console.log('ele: ', ele);
})

打包

main.js中修改了一点点内容,重新打包

注:为了展示源码,这里关闭了打包时的代码压缩。vite.config.js中配置build:{minify:false}

通过这个示例我们可以发现个问题,我们引入了lodash,虽然它的内容始终没有变(大概有5481行的代码),但是随着业务代码的一点点修改,它都会和业务代码打包在一起,被浏览器重新请求。

这是浪费性能的,lodash完全没有必要被重新请求。如果我们将lodash和业务代码打包成两个独立的js文件,就可以完美解决这个问题。这就是分包策略。

分包策略就是把一些不会经常更新的文件,进行单独打包处理。

分包策略的实现

vite中实现分包策略,实际是靠配置rollup的打包配置完成的。

// vite.config.js
import { defineConfig } from "vite";
export default defineConfig({
  build:{
    // 在这里配置打包时的rollup配置
    rollupOptions:{
    }
  }
});

rollup的output.manualChunks这一配置可以实现分包策略,具体内容可以查看官网:

https://www.rollupjs.com/guide/big-list-of-options

output.manualChunks

官方注解:

当该选项值为函数形式时,每个被解析的模块都会经过该函数处理。如果函数返回字符串,那么该模块及其所有依赖将被添加到以返回字符串命名的自定义 chunk 中。例如,以下例子会创建一个命名为 vendor 的 chunk,它包含所有在 node_modules 中的依赖。

manualChunks(id) {
  if (id.includes('node_modules')) {
    return 'vendor';
  }
}

我们打印一下manualChunks函数的参数

import { defineConfig } from "vite";
export default defineConfig({
  build:{
    minify:false,
    // 在这里配置打包时的rollup配置
    rollupOptions:{
      manualChunks:(id) => {
        console.log("id-------------",id);
      }
    }
  }
});

可以看出,id对应的就是所有需要打包整合的文件,如果id包含node_modules,一定不是我们的业务代码,根据官方释义,我们可以将包含node_modules的文件打包在一起

import { defineConfig } from "vite";
export default defineConfig({
  build:{
    minify:false,
    // 在这里配置打包时的rollup配置
    rollupOptions:{
      manualChunks:(id) => {
        if (id.includes('node_modules')) {
          return 'vendor';
        }
      }
    }
  }
});

重新打包后,可以发现分包策略已经实现了。

到此这篇关于Vite性能优化之分包策略的实现的文章就介绍到这了,更多相关Vite 分包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vite性能优化之分包策略的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vite性能优化之分包策略的实现

本文主要介绍了Vite性能优化之分包策略的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-19

SQL性能优化策略之索引优化方法

SQL优化是优化工作中经常会涉及的问题,由于早期的开发人员往往只关注于SQL功能的实现,而忽略了性能。特别是复杂的SQL,上线之后很少修改,一旦出现问题,即使是当初的开发人员自己也很难理清其中的业务逻辑,需要花费大量的时间去理解代码之间的
SQL索引性能2024-12-03

PHP数组分页的性能优化策略

提高 php 数组分页性能的策略包括:避免使用 foreach 循环,使用 array_slice() 函数。使用 array_chunk() 函数将数组划分为更小的块。通过数据库分页、缓存等策略优化大型数据分页。PHP 数组分页的性能优化
PHP数组分页的性能优化策略
2024-05-02

SQL性能优化策略之联合索引优化方法

LIS_REQUISITION_INFO表的访问先通过I_PRINT_TIME索引进行范围扫描,符合条件的记录回表之后再过滤,产生了大量的单块读。
SQL策略优化2024-12-03

Vite 性能篇:掌握这些优化策略,一起纵享丝滑!

Vite 在开发环境性能已经非常不错了,今天我们主要聊聊生产环境的优化,其实方式和 Webpack 大同小异,只不过 Vite 构建时使用的是 Rollup 而已。
ViteWebpack2024-12-01

实施高效的网站性能优化策略

随着互联网的迅速发展,网站成为了企业宣传、营销、销售的重要渠道。然而,不少网站在面对高访问量和用户同时访问的情况下,性能下降严重,导致用户体验差,甚至影响到网站的商业价值。为了解决这个问题,网站性能优化成为了重要的工作。本文将从策略和实施方
实施高效的网站性能优化策略
2024-02-02

Vite打包优化之缩小打包体积实现详解

这篇文章主要为大家介绍了使用Vite缩小打包体积如何实现的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-04

PHP Session 跨域的性能优化策略

在进行 Web 开发过程中,跨域访问是一个常见的需求。然而,当使用 PHP 的 Session 机制时,跨域访问可能会导致性能下降。本文将介绍一些优化策略,帮助您解决这个问题并提升 Web 应用的性能。一、理解 Session 跨域问题为了
2023-10-21

Java Soft 的性能优化具体有哪些策略呢?(java soft的性能优化有哪些策略)

在Java开发中,性能优化是一个至关重要的环节,它直接影响到应用程序的响应速度、吞吐量和资源利用率。对于JavaSoft来说,以下是一些常见的性能优化策略:一、代码层面优化减少对象创建
Java Soft 的性能优化具体有哪些策略呢?(java soft的性能优化有哪些策略)
Java2024-12-13

Vite图片资源打包优化的实现

本文主要介绍了Vite图片资源打包优化的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-15

Vue组件的渲染性能优化策略

本篇文章详细介绍了Vue组件的渲染性能优化策略,涵盖了数据绑定、DOM操作和组件结构的优化,并提供了减少组件通信和提升性能的其他技巧。通过遵循这些策略,开发者可以有效提升Vue组件的渲染性能,打造流畅、交互快速的Web应用。
Vue组件的渲染性能优化策略
2024-04-02

Golang中同步机制的性能分析与优化策略

在Golang中,同步机制是通过互斥锁(Mutex)、读写锁(RWMutex)和信号量(Semaphore)等方式来实现的。性能分析:1. 使用工具:可以使用Go语言自带的性能分析工具pprof,结合互斥锁、读写锁和信号量的使用情况,分析代
2023-10-08

如何优化 Java UTF 字符串的性能?有哪些策略?(java utf字符串的性能优化策略)

在Java编程中,字符串是非常常用的数据类型之一,而UTF字符串更是广泛应用于处理国际化和多语言文本。然而,处理UTF字符串可能会对性能产生一定的影响,因此需要采取一些性能优化策略。一、了解UTF编码UTF(Un
如何优化 Java UTF 字符串的性能?有哪些策略?(java utf字符串的性能优化策略)
Java2024-12-15

PHP接口性能优化之网络协议优化(PHP接口中网络协议的性能优化策略)

本文重点介绍PHP接口中网络协议性能优化策略,通过选择高效协议(HTTP/2、QUIC)、优化协议参数(TCP缓冲区、MTU、Keep-Alive)、使用GZIP压缩、减少DNS查找、减少重定向、优化证书验证、利用CDN等方法,以及异步请求、监控网络性能、优化服务器端响应时间等技巧,帮助提升接口性能。
PHP接口性能优化之网络协议优化(PHP接口中网络协议的性能优化策略)
2024-04-02

阿里云服务器性能分析与优化策略

阿里云服务器作为云计算领域的重要组成部分,其性能稳定性直接影响着云计算应用的用户体验。本文将从阿里云服务器的性能分析入手,探讨阿里云服务器看快不看就慢的原因,并提出相应的优化策略。一、阿里云服务器性能分析服务器配置:服务器的配置直接影响着服务器的性能。阿里云服务器的配置包括CPU、内存、硬盘、网络等,这些配置的选
阿里云服务器性能分析与优化策略
2023-11-10

Python性能优化:十个提升代码性能的策略

今天,我们就来聊聊如何让你的Python代码飞起来——通过10个实用的性能优化策略。
Python代码2024-11-29

编程热搜

目录