[Vite] 性能优化

news/2025/2/21 16:00:26/文章来源:https://www.cnblogs.com/Answer1215/p/18729398

  • 关于HTTP: https://www.cnblogs.com/Answer1215/p/18729206

 

DNS

打包方式:

  • 所有代码(包括 lodash-es、element-ui 等)被打包到一起,部署时只需请求一个或几个大文件。
  • 优点是简单,不需要额外的网络请求;缺点是文件体积大,首次加载延迟较高,而且用户如果之前访问过其他站点加载了相同 CDN 版本的库,也无法复用缓存

DNS 预解析与分域加载:

  • 通过在 HTML 中加上 <link rel="dns-prefetch" href="//cdn.example.com">,浏览器提前解析域名,减少后续请求时的 DNS 解析时间。
  • 把第三方库放在 CDN 上,用户可能已因其他站点访问而缓存了这些库;同时浏览器可以对不同域名并行建立连接,从而加快加载速度。
  • 优点是减小主 bundle 体积、降低首屏加载延时、利用缓存和并发下载;缺点则是需要管理多个源,并考虑版本控制和 CDN 可靠性。

 

 

Vite中的配置

// https://vitejs.dev/config/
export default defineConfig(({ mode }: ConfigEnv): UserConfig => { ...return {plugins: [vue(),ElementPlus({ format: 'esm' }),],resolve: {alias: {"@": resolve(__dirname, "src"),// 注意,别名处理这里只能是ESM模块,CJS模块无法处理"lodash-es":"https://cdn.jsdelivr.net/npm/lodash-es@4.17.21/+esm"}},build: {...  // 自动注入一个 模块预加载 polyfillmodulePreload: {polyfill: true},rollupOptions: {external:['vue','vue-router','element-plus','vue-echarts','echarts','@vueuse/core'],plugins: [externalGlobals({"vue": "Vue","vue-router": "VueRouter","element-plus": 'ElementPlus',"@vueuse/core": "VueUse","echarts": "echarts","vue-echarts": "VueECharts",})],}}}
})

 

Tree shacking

推荐

使用ESM模块化的库,比如lodash-es

🙅

使用lodash

 

推荐

import {debounce} from "lodash-es"

🙅

import lodash from 'lodash-es'

 

代码压缩

 

构建分析

https://github.com/btd/rollup-plugin-visualizer

 

gzip压缩

https://nginx.org/en/docs/http/ngx_http_gzip_module.html

https://github.com/nonzzz/vite-plugin-compression

https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html

 

后端代码示例

const http = require('http')
const path = require('path')
const fs = require('fs')
// 提供静态文件服务
const sirv = require('sirv')const defaultWD = process.cwd()const publicPath = path.join(defaultWD, 'dist')const assets = sirv(publicPath, { gzip: true, brotli: true })function createServer() {const server = http.createServer()server.on('request', (req, res) => {assets(req, res, () => {res.statusCode = 404res.end('File not found')})})server.listen(8080, () => {const { port } = server.address()console.log(`server run on http://localhost:${port}`)})
}function main() {if (!fs.existsSync(publicPath)) throw new Error('Please check your\'re already run \'npm run build\'')createServer()
}main()

 

图片压缩

pnpm add vite-plugin-imagemin -D

import viteImagemin from 'vite-plugin-imagemin'export default () => {return {plugins: [viteImagemin({gifsicle: {optimizationLevel: 7,interlaced: false,},optipng: {optimizationLevel: 7,},mozjpeg: {quality: 20,},pngquant: {quality: [0.8, 0.9],speed: 4,},svgo: {plugins: [{name: 'removeViewBox',},{name: 'removeEmptyAttrs',active: false,},],},}),],}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887633.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 并发场景梳理

一、多进程(Multiprocessing) 1、使用场景 适合CPU密集型任务,因为每个进程运行在独立的Python解释器中,不受全局解释器锁(GIL)的影响。 2、代码from multiprocessing import Process import timedef task():print("Task is running")time.sleep(10)processes …

Pic2Word

目录概Pic2Word代码Saito K., Sohn K., Zhang X., Li C., Lee C., Saenko K., and Pfister T. Pic2Word: Mapping pictures to words for zero-shot composed image retrieval. CVPR, 2023.概 本文关注的是 Composed Image Retrieval (CIR) 任务: 给定一个 reference (query) i…

SciTech-EECS-BigDataAIML-NN(神经网络): 常用的18种Activation(激活函数)

SciTech-EECS-BigDataAIML-NN(神经网络): 常用的18种Activation(激活函数) 一:简介 二:为什么要用激活函数 三:激活函数的分类 四:常见的几种激活函数 4.1.Sigmoid函数 4.2.Tanh函数 4.3.ReLU函数 4.4.Leaky Relu函数 4.5.PRelu函数 4.6.ELU函数 4.7.SELU函数 4.8.Swish函数…

用了CRM后,业绩不升反滑?问题可能出在这6个地方!

用了CRM系统后,我的公司——客户跟丢了 销售效率下降了 业绩一落千丈哈哈,比我惨的还有谁?! 不过我潜心研究了一阵,终于把这个CRM系统给弄懂了! 今天就跟大家聊一聊,为什么用了CRM系统后不仅没能提升业绩,反而拖了后腿,这是踩了哪些坑?以及该怎么调整才能真正发挥CRM…

功率MOS管的参数说明

图解功率MOS管的每一个参数!最大额定参数 最大额定参数,所有数值取得条件(Ta=25℃)VDSS 最大漏-源电压 在栅源短接,漏-源额定电压(VDSS)是指漏-源未发生雪崩击穿前所能施加的最大电压。根据温度的不同,实际雪崩击穿电压可能低于额定VDSS。关于V(BR)DSS的详细描述请参见静电…

安卓系统远程控制电脑方法,手机远控教程,ToDesk工具

不知道大家有没有觉得手机、平板虽然很好用,却也仍存在有很多替代不了电脑的地方。 就比如说撰写文档、做数据报表啥的就不如PC端操作般方便,就跟别说PS修图、AE视频剪辑等需高性能设备来带动才易用的了。 好在也是有对策可解决,装个ToDesk远程控制工具便能实现各设备的互联…

功率器件热设计基础(八)——利用瞬态热阻计算二极管浪涌电流

上一篇讲了两种热等效电路模型,Cauer模型和Foster模型,这一篇以二极管的浪涌电流为例,讲清瞬态热阻曲线的应用。/ 前言 / 功率半导体热设计是实现IGBT、碳化硅SiC高功率密度的基础,只有掌握功率半导体的热设计基础知识,才能完成精确热设计,提高功率器件的利用率,降低系统…

利用 Sapnco 在.net/c# 中跨系统调用 SAP RFC 功能,执行SAP中的函数

利用Sapnco 在.net/c# 中跨系统调用 SAP RFC 功能,执行SAP中的函数 Sapnco -C#中使用的核心组件,sap官网有下,本文使用的版本在 framework 平台使用, sap 官网地址,但是下载要权限,全名称为: SAP Connector for Microsoft .NET ,链接:https://support.sap.com/en/pro…

SAP咨询公司排名探析:谁执牛耳?

SAP作为全球领先的软件集成供应商,其提供的ERP、CRM、SCM及BI等解决方案深受企业青睐。而SAP咨询公司,作为SAP软件实施、咨询与运维服务。如何评判这些咨询公司的实力呢?以下,我们将从分类、评估指标及领先公司等方面进行深入探讨。一、SAP咨询公司的双轨并行SAP咨询公司大…

Jmeter 自定义的respCode不是0就报异常

在实际使用中,后台其实已经对异常的进行了处理,response body 返回来的,都是正常的请求响应; 这个时候,则需要通过 respCode 进行判断该请求是否是有效响应。 如响应报文如下:{"respCode": 0,"errMsg": null,"data": 100000 } 处理:对 …

mysql 索引页存储关系

前言 简单介绍一下页存储的关系。 正文 在前文中,我们已经知道了页存储的内怎么去查询的数据的,也就两点。记录根据主键(索引)按照顺序链式存储有一个page directory,里面有槽,可以快速定位到槽,然后就可以从链式存储的某个点进行分组查询理论上这样在一页内查询还是非常o…

为什么你的客户留不住?可能是CRM没用对!

最近同事跟我抱怨: ——“营销活动越做越多,可是活跃的客户突然就不见了。” ——”跟客户明明聊的好好的,怎么一转头就不合作了?“ ——“客户一走,业绩没保障,我可太焦虑了😭!!!” 客户流失率越来越高,不仅影响个人业绩,从长远来看,还会影响到公司品牌的信誉和…