Vue打包后chunk-vendors.92223bd2.js文件过大解决方案

news2024/11/30 2:40:40

唠嗑部分

事情的经过是这样的,最近自己玩了一个小系统,使用的是SpringBoot+Vue编写,打包部署后发现页面加载缓慢,打开控制台一看,发现是这家伙在作祟,请看下图

image-20230528084549523

什么鬼,这个js文件2.6M,花费6s,很多小伙伴本地开发的时候,根本不会出现这种问题,只有部署后才会出现,云服务器配置:2核2G4Mbps(没钱租好的),总之开发一个好的系统考虑的因素有很多,网络带宽也是必不可少的因素

下面我们来说一说免费的解决方案

言归正传

1、安装插件

yarn add compression-webpack-plugin@6.1.1 --save-dev

2、在vue.config.js配置如下

...
module.exports = defineConfig({
    ...
    configureWebpack: {
        ...
        plugins: process.env.NODE_ENV === 'production' ? [
            new CompressionWebpackPlugin({
                algorithm: 'gzip',
                test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
                threshold: 10240,
                minRatio: 0.8
            })
        ] : []
    },
})

3、运行打包命令

npm run build

打包后打开js目录发现有很多.gz结尾的文件

image-20230528102650480

4、上传&修改nginx配置文件,添加如下配置

http {
    ...
    #gzip模块设置,使用 gzip 压缩可以降低网站带宽消耗,同时提升访问速度。
    gzip  on;                     #开启gzip
    gzip_min_length  1k;          #最小压缩大小
    gzip_buffers     4 16k;       #压缩缓冲区
    #gzip_http_version 1.0;        #压缩版本
    gzip_comp_level 9;            #压缩等级
    gzip_types   text/plain application/x-javascript text/css application/xml application/javascript text/javascript application/x-httpd-php image/jpeg image/gif image/png;  #压缩类型
    gzip_vary off;
    gzip_disable "MSIE [1-6]\.";
    
    ...
}

解释一下:

第1行:开启Gzip

第2行:不压缩临界值,大于1K的才压缩,一般不用改

第3行:buffer,就是,嗯,算了不解释了,不用改

第4行:用了反向代理的话,末端通信是HTTP/1.0,有需求的应该也不用看我这科普文了;有这句的话注释了就行了,默认是HTTP/1.1

第5行:压缩级别,1-10,数字越大压缩的越好,时间也越长,看心情随便改吧

第6行:进行压缩的文件类型,缺啥补啥就行了,JavaScript有两种写法,最好都写上吧,总有人抱怨js文件没有压缩,其实多写一种格式就行了

第7行:跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding",我不需要这玩意,自己对照情况看着办吧

第8行:IE6对Gzip不怎么友好,不给它Gzip了

注意:js文件类型对应application/javascript,如果不加会不生效(小白亲踩坑)

5、重启nginx

docker restart nginx

6、测试,这个耗时看着舒服多了,页面加载也快了好多

image-20230528101402286

结语

1、以上就是我们今天分享的内容。

2、制作不易,一键三连再走吧,您的支持永远是我最大的动力!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h“

今天创建一个静态库时,编译器报错:error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h” 网上查找了各种解决方案,主要是以下两种解决方案: 解决方式: 一. 在解决方案资源…

数据结构与算法07:高效的排序算法

目录 归并排序 快速排序 桶排序 计数排序 基数排序 对比各类排序算法 每日一练:排序链表 在上一篇文章中分析了简单的三种排序算法:冒泡排序、插入排序、选择排序,这三种排序算法的时间复杂度都是O(n^2),效率不是很高。如果…

KUC711AE101 3BHB004661R0101 用于精确误差仿真的设备

KUC711AE101 3BHB004661R0101 最近推出的欧姆龙自动化产品包括CJ2H-CPU可编程自动化控制器、NS15超清晰15英寸HMI以及用于CJ和CS平台的基于PLC的高速位置控制器模块。通过以太网/IP使用CJ2H-CPU的行业标准、基于标记的编程有助于缩短程序开发时间和故障排除。CX-One有助于满足市…

分布式时序数据库DolphinDB

简介 DolphinDB不仅可作为分布式数据仓库或者内存数据库来使用,而且自带丰富的计算工具,可作为一个研究工具或研究平台来使用。DolphinDB对时间序列数据的处理特别友好,非常适合量化金融、物联网等领域的海量数据分析。例如在量化金融领域的交…

JavaEE进阶(5/29)Mybatis

目录 1.什么是Mybatis 2.Mybatis组成部分 3.配置Mybatis中的存放路径 4.设置路径 6.yml配置MyBatis的xml配置文件路径 1.什么是Mybatis 它是一款持久层框架,支持自定义SQL,存储过程(一个方法,封装了一堆SQL(包括判断/变…

spring security实现authorization code模式,自定义登录页面,自动授权,自定义密码编码,跳转登录页面http转https

spring security实现authorization code模式# 系列文章目录 SpringSecurity实现OAuth2 JWT和OAuth2在SpringBoot下的实现 spring security实现authorization code模式 摘要自定义登录页面自动授权自定义密码验证跳转登录页面http转https 摘要 为了将老项目接口安全暴露给第三…

在线帮助中心搭建利器:Baklib

帮助中心是一个提供服务和支持的虚拟平台,旨在为客户提供解决问题和获取信息的途径。它通常包含企业或组织的产品或服务的相关信息、解决方案、操作指南和常见问题等信息。通过帮助中心,用户可以自助查询并解决问题,从而提高了客户的满意度和…

Neutron — 虚拟机网卡创建过程

目录 文章目录 目录创建并绑定虚拟机的虚拟网卡1、创建 VM 和 Port 记录2、创建 VM 和 Port 实体3、更新 Port 状态 创建并绑定虚拟机的虚拟网卡 在 OpenStack 中,Nova 负责虚拟机的生命周期管理,Neutron 负责虚拟网络的生命周期管理。而虚拟机的虚拟网…

两个直线/线段的交点 - C++

问题&#xff0c;求上图中线段AB 和线段CD的交点P的坐标 根据《算法艺术与信息学竞赛》&#xff0c;公式如下 原理&#xff1a; 利用叉积求得点P分线段DC的比&#xff0c;然后利用高中学习的定比分点坐标公式求得分点P的坐标 c代码如下 #include <math.h> #include &l…

压力山大?搭建JMeter分布式压测环境轻松应对!

目录 引言 windows环境部署 1.安装环境变量 2.配置环境变量 3.修改Jmeter配置文件 4.启动jmeter 5.启动分布式服务 Linux环境部署 1.安装JDKJmeter 2.环境优化 4.编写Jmeter脚本 5.启动Jmeter 6.停止Jmeter 7.打包查看测试报告 引言 您想要提高您的应用程序的性…

【JavaSE】Java基础语法(三十五):多线程实战

文章目录 1. 多线程入门1.1 多线程相关概念1.2 什么是多线程1.3 多线程的创建方式1.3.1 继承 Thread 的方式1.3.2 实现 Runnable 接口的方式1.3.3 实现 Callable 接口的方式1.3.4 Thread 类中常用方法1.3.5 sleep() 方法 和 wait() 方法区别&#xff1a; 2. 线程安全2.1 线程安…

破坏单例模式--存在的问题---问题的解决

目录 破坏单例模式--存在的问题---问题的解决 问题演示 破坏单例模式&#xff1a; 序列化 反射 序列化反序列化&#xff1a; 代码&#xff1a; 运行结果&#xff1a; 反射 代码&#xff1a; 运行结果&#xff1a; 问题的解决 序列化、反序列方式破坏单例模式的解…

Elasticsearch 8.X 性能优化参考 —— 筑梦之路

Elasticsearch 是实现用户无缝搜索体验的关键工具。它通过提供快速、准确和相关的搜索结果&#xff0c;彻底改变了用户与应用程序的互动方式。然而&#xff0c;要确保 Elasticsearch 部署达到最佳性能&#xff0c;就必须关注关键指标&#xff0c;并对诸如索引、缓存、查询、搜索…

monorepo 项目 Unable to resolve path to module ‘xxx‘.eslintimport/no-unresolved

同事问了一个问题&#xff0c;他现在参加了一个项目&#xff0c;这个项目是个monorepo 项目。 也就是多包管理、前后端一起都是js 写的。 问题 后端express 项目里配置的路径别名&#xff0c;eslint 不认识&#xff0c;报错。 Unable to resolve path to module /app/Prisma.e…

Phaser笔记-鼠标点击获取坐标键盘控制sprite

代码如下&#xff1a; import phaser;class PlayGame extends Phaser.Scene {constructor() {super("PlayGame");}preload() {this.load.spritesheet(run, assets/_Run.png, {frameWidth: 120, frameHeight: 80});this.load.spritesheet(idle, assets/_Idle.png, {f…

GEE:对Sentinel-2遥感影像进行处理,水体提取与可视化

作者&#xff1a;CSDN _养乐多_ 本文介绍了通过Google Earth Engine平台&#xff0c;并使用哨兵数据提取水体掩膜的方法和代码。通过裁剪和去除云等处理步骤&#xff0c;最终得到具有水体掩膜的影像&#xff0c;并进行可视化和导出。这种方法基于归一化水体指数&#xff08;N…

MIT 6.S081 (BOOK-RISCV-REV1)教材第一章内容

MIT 6.S081 教材第一章内容 引言第一章 操作系统接口进程和内存I/O和文件描述符管道文件系统真实世界 引言 MIT 6.S081 2020 操作系统 本文为MIT 6.S081课程第一章教材内容翻译加整理。 本课程前置知识主要涉及: C语言(建议阅读C程序语言设计—第二版)RISK-V汇编推荐阅读: 程…

JavaScript 数据透视表 DHTMLX Pivot Crack

DHTMLX Pivot JavaScript 数据透视表 - 强大的数据汇总和报告 使用我们的高速 JavaScript/HTML5 Pivot 组件可视化您的复杂数据&#xff0c;从而提高您的商业智能。 它可以帮助您以方便的方式汇总大型数据集。 主要特征 纯 JavaScript 库&#xff0c;可轻松与任何服务器端集成…

Linux安装Mysql8,过程详细(离线安装mysql)

因公司需要&#xff0c;需要在服务器上安装一个mysql&#xff0c;但是机器没有外网权限&#xff0c;所以记录一下安装过程&#xff0c;供大家参考。 官网下载安装包 地址&#xff1a;https://dev.mysql.com/downloads/ 如图示&#xff0c;选择MySQL Community Server 如图示&a…

git新手将网页设计代码提交到github上

以下是将代码提交到Github上的一些步骤。如果中途遇到问题或不会的需要我帮忙&#xff0c;可以文章底部联系我。 1. 创建Github账户 首先&#xff0c;您需要在Github上注册一个账户。 如果您已经有账户了&#xff0c;请跳过这一步。 2. 创建一个新的repository 在您的Githu…