iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vite性能优化之分包策略的实现
  • 896
分享到

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

Vite 分包策略Vite 分包 2023-05-19 11:05:28 896人浏览 安东尼
摘要

目录为什么需要分包策略?浏览器的缓存策略浏览器缓存策略的不足分包策略的实现为什么需要分包策略? 还是举个例子,来回忆一下吧,什么呢?比如说,我使用了 loadsh.js 的东西,那么

为什么需要分包策略?

还是举个例子,来回忆一下吧,什么呢?
比如说,我使用了 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 分包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vite性能优化之分包策略的实现

本文链接: https://www.lsjlt.com/news/213137.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Vite性能优化之分包策略的实现
    目录为什么需要分包策略?浏览器的缓存策略浏览器缓存策略的不足分包策略的实现为什么需要分包策略? 还是举个例子,来回忆一下吧,什么呢?比如说,我使用了 loadsh.js 的东西,那么...
    99+
    2023-05-19
    Vite 分包策略 Vite 分包
  • webpack构建性能优化策略的示例分析
    小编给大家分享一下webpack构建性能优化策略的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景如今前端工程化的概念...
    99+
    2022-10-19
  • Vite打包优化之缩小打包体积实现详解
    目录正文分析文件依赖指定文件按需加载路径别名&文件尾缀静态资源的打包最小化拆分包关闭一些打包配置项低版本浏览器兼容使用CDN开启Gzip如何测试网页性能?最后正文 说到前端性...
    99+
    2023-01-04
    Vite缩小打包体积 Vite打包优化
  • PHP Session 跨域的性能优化策略
    在进行 Web 开发过程中,跨域访问是一个常见的需求。然而,当使用 PHP 的 Session 机制时,跨域访问可能会导致性能下降。本文将介绍一些优化策略,帮助您解决这个问题并提升 Web 应用的性能。一、理解 Session 跨域问题为了...
    99+
    2023-10-21
    策略 性能优化 跨域
  • Golang中同步机制的性能分析与优化策略
    在Golang中,同步机制是通过互斥锁(Mutex)、读写锁(RWMutex)和信号量(Semaphore)等方式来实现的。性能分析...
    99+
    2023-10-08
    Golang
  • 阿里云服务器性能分析与优化策略
    阿里云服务器作为云计算领域的重要组成部分,其性能稳定性直接影响着云计算应用的用户体验。本文将从阿里云服务器的性能分析入手,探讨阿里云服务器看快不看就慢的原因,并提出相应的优化策略。 一、阿里云服务器性能分析服务器配置:服务器的配置直接影响着...
    99+
    2023-11-10
    阿里 性能 策略
  • Vite图片资源打包优化的实现
    目录步骤1: 安装依赖步骤2: 配置Vite步骤3: 加载图片步骤4: 查看优化结果总结Vite是一种现代化的前端构建工具,它的打包速度非常快。在使用Vite进行开发的过程中,图片资...
    99+
    2023-05-15
    Vite图片资源打包优化 Vite图片打包优化 Vite打包优化
  • 分销平台代码实现与优化策略
    分销平台是电子商务中的重要组成部分,它可以让商家把商品销售给多个中间商,从而扩大销售范围。本文将介绍如何使用代码实现分销平台的功能,并提供一些优化策略,以提高分销平台的效率和用户体验。 分销平台的实现离不开代码,下面是一个简单的分销平台的代...
    99+
    2023-12-12
    策略 代码 平台
  • PHP Session 跨域的并发性能优化策略
    当使用PHP会话(Session)来跨域共享数据时,可能会遇到性能问题,特别是在高并发的情况下。本文将介绍一些优化策略,帮助您提升PHP会话在跨域场景下的性能,并提供具体的代码示例。减少会话数据量会话数据的大小直接影响性能。如果会话中存储了...
    99+
    2023-10-21
    session 跨域 并发性能优化
  • SQL语句性能优化的策略有哪些
    这篇文章主要介绍“SQL语句性能优化的策略有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SQL语句性能优化的策略有哪些”文章能帮助大家解决问题。52 条 SQL 语句性能优化策略:对查询进行优...
    99+
    2023-06-28
  • MySQL SSL 连接的优化策略与性能测试
    MySQL SSL 连接的优化策略与性能测试摘要:随着数据安全性的重视,越来越多的应用程序使用SSL来加密与数据库的通信。然而,使用SSL加密连接可能会对MySQL的性能产生一定的影响。本文将介绍一些优化策略,帮助提高MySQL SSL连接...
    99+
    2023-10-22
    性能测试 优化策略 SSL连接
  • Golang中的同步模型与性能优化策略
    在 Golang 中,同步模型和性能优化策略是非常重要的主题。1. 同步模型:- 互斥锁(Mutex):最常用的同步机制,用于保护共...
    99+
    2023-10-20
    Golang
  • Android 分析实现性能优化之启动速度优化
    目录启动方式冷启动(启动优化目标)热启动温启动启动流程中可优化的环节检测工具启动时间检测Logcat Displayedadb 命令统计CPU profileAPI level &g...
    99+
    2022-11-12
  • 如何实现MySQL底层优化:缓存机制的高级应用和性能优化策略
    抱歉,由于涉及专业的技术性内容和代码示例,我无法在当前平台上提供1200字以内的详实文段。你可以在专业的技术网站或者数据库技术书籍上寻求帮助。...
    99+
    2023-11-08
    缓存 MySQL 优化
  • MongoDB和SQL语句的性能比较及优化策略?
    MongoDB和SQL语句的性能比较及优化策略随着大数据时代的来临,数据存储和处理变得尤为重要。在数据库领域中,MongoDB和SQL是两种常见的解决方案。不同的数据库在性能方面存在一定的差异,因此优化查询语句是提高系统性能的关键。本文将比...
    99+
    2023-12-18
    SQL MongoDB 性能优化
  • GO语言在Apache分布式系统中的性能优化策略探讨
    Apache是一个非常流行的分布式系统,它的出现使得分布式计算变得更加容易。在Apache中,运用GO语言可以提高系统的性能,但是GO语言的性能优化策略也是非常重要的。 一、GO语言在Apache中的优势 GO语言是一门非常流行的编程语言...
    99+
    2023-08-15
    分布式 apache path
  • 阿里云数据库导出性能优化策略及实践
    随着云计算技术的不断发展和普及,越来越多的企业开始使用阿里云数据库进行数据存储和管理。然而,随着数据量的不断增长,如何有效提高阿里云数据库的导出性能成为了一个重要问题。本文将详细说明如何进行阿里云数据库导出性能优化,并结合实际案例进行实践,...
    99+
    2023-11-06
    阿里 性能 策略
  • Linux脚本操作的Python实现优化策略
    Linux脚本操作的Python实现优化策略摘要:随着Linux操作系统的广泛使用,使用脚本进行自动化操作已经成为了一种常见的方式。在这篇文章中,我们将讨论如何用Python来优化Linux脚本操作,从而提高效率和可维护性。具体而言,我们将...
    99+
    2023-10-22
    Linux Python实现 脚本操作
  • Golang中同步机制的性能瓶颈与优化策略
    在Golang中,同步机制主要是通过互斥锁(Mutex)和条件变量(Cond)来实现的。这些同步机制的性能瓶颈通常出现在高并发场景下...
    99+
    2023-10-10
    Golang
  • 索引和打包:Python 中的实时优化策略是什么?
    在数据处理领域中,索引和打包是非常重要的概念。在 Python 中,实时优化策略可以帮助我们更好地利用这些概念来提高数据处理的效率。本文将介绍索引和打包的概念,并提供一些实时优化策略的示例代码。 一、索引和打包的概念 索引是指通过某种方式...
    99+
    2023-10-29
    索引 实时 打包
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作