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

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

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

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

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

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

PHP Session 跨域的性能优化策略

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

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

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

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

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

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

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

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

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

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

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

PHP Session 跨域的并发性能优化策略

当使用PHP会话(Session)来跨域共享数据时,可能会遇到性能问题,特别是在高并发的情况下。本文将介绍一些优化策略,帮助您提升PHP会话在跨域场景下的性能,并提供具体的代码示例。减少会话数据量会话数据的大小直接影响性能。如果会话中存储了
2023-10-21

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

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

SQL语句性能优化的策略有哪些

这篇文章主要介绍“SQL语句性能优化的策略有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SQL语句性能优化的策略有哪些”文章能帮助大家解决问题。52 条 SQL 语句性能优化策略:1、对查询进
2023-06-28

Docker在Linux下优化网络性能的策略

在Linux下优化Docker容器的网络性能,可以通过以下策略实现:使用Host网络模式优势:容器直接使用宿主机的网络堆栈,减少了网络层的开销,适合高性能场景。注意事项:容器和宿主机共享网络命名空间,增加了安全风险和管理复杂性。使用Ov
Docker在Linux下优化网络性能的策略
2024-10-07

PHP 函数的性能优化策略有哪些?

php 函数性能优化策略包括:减少函数调用,使用循环或缓存机制;简化函数内容,将复杂操作分解为更小的代码块;优化参数传递,使用传引用参数和设置默认值;使用高效的数据结构,如哈希表或数组;启用 php 优化选项,如 opcache 和内存限制
PHP 函数的性能优化策略有哪些?
2024-04-10

分销平台代码实现与优化策略

分销平台是电子商务中的重要组成部分,它可以让商家把商品销售给多个中间商,从而扩大销售范围。本文将介绍如何使用代码实现分销平台的功能,并提供一些优化策略,以提高分销平台的效率和用户体验。正文:分销平台的实现离不开代码,下面是一个简单的分销平台的代码实现示例:```pythonclassProduct:definit
分销平台代码实现与优化策略
2023-12-12

编程热搜

目录