前言

这段时间因为免费试用了https://free.aliyun.com/一台阿里云的服务器,配置是 2核4G 2M,
因为带宽太低了,每次在第一次加载的时候太慢了,通过F12调试,发现主要是因为加载的 js 过大而引起的。因此本文将主要讲解Vue项目打包后js、css、svg等文件过大的解决办法。

引入插件 compression-webpack-plugin

通过引入 compression-webpack-plugin 插件来打包,然后开启 nginx gzip 来解决问题

CompressionWebpackPlugin插件参数配置:官网 https://www.webpackjs.com/plugins/compression-webpack-plugin/

  • 安装插件依赖
#指定版本
npm i compression-webpack-plugin@5.0.1
#或者
npm i -D compression-webpack-plugin
npm install compression-webpack-plugin --save

  • 说明

    • i 是install 的简写
    • -S就是–save的简写
    • -D就是–save-dev 这样安装的包的名称及版本号就会存在package.json的devDependencies这个里面,而–save会将包的名称及版本号放在dependencies里面。
  • 修改 vue.config.js 文件,内容如下

const CompressionPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i;
module.exports = {publicPath: '/',productionSourceMap: false,configureWebpack: {...},chainWebpack: config => {config.resolve.alias.set('@', resolve('src'));config.when(process.env.NODE_ENV !== 'development',config => {// 提供带 Content-Encoding 编码的压缩版的资源config.plugin('compressionPlugin').use(new CompressionPlugin({filename: '[path].gz[query]', // 目标文件名algorithm: 'gzip',  // 压缩算法test: productionGzipExtensions, // 满足正则表达式的文件会被压缩threshold: 10240, // 只处理比这个值大的资源。按字节计算 10240=10KBminRatio: 0.8, // 只有压缩率比这个值小的资源才会被处理deleteOriginalAssets: true // 是否删除原资源}));})}
}

更多详细配置请查看本项目代码,地址:https://gitee.com/zmzhou-star/easyboot.git

Vue项目打包

npm run build:prod

配置 compression-webpack-plugin 前后打包对比,我们查看 dist目录,能够发现大于10KB的 jscss 等文件已经被压缩了

配置 compression-webpack-plugin

配置 compression-webpack-plugin

修改Nginx配置 开启 gzip

# on为启用,off为关闭
gzip on;
# Nginx的动态压缩是对每个请求先压缩再输出,这样造成虚拟机浪费了很多cpu,解决这个问题可以利用nginx模块Gzip Precompression,这个模块的作用是对于需要压缩的文件,直接读取已经压缩好的文件(文件名为加.gz),而不是动态压缩,对于不支持gzip的请求则读取原文件
gzip_static on;
# 设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。
gzip_min_length 1k;
# 获取多少内存用于缓存压缩结果,‘4 16k’表示以16k*4为单位获得
gzip_buffers 16 64K;
# 识别http协议的版本,早期浏览器可能不支持gzip自解压,用户会看到乱码
gzip_http_version 1.1;
# gzip压缩比(1~9),越小压缩效果越差,但是越大处理越慢,所以一般取中间值;
gzip_comp_level 5;
# 对特定的MIME类型生效,其中'text/html’被系统强制启用
gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
# 启用应答头"Vary: Accept-Encoding"
gzip_vary on;
# IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库
gzip_disable "MSIE [1-6].";

完整Nginx配置请看 Nginx安装

  • 重启 nginx
systemctl reload nginx

测试效果,访问:http://47.119.196.11,F12打开开发者工具

压缩前

压缩后,发现响应时间得到了明显提升

Vue项目打包后js文件压缩相关推荐

  1. 快速解决Vue项目打包后文件过大问题

    快速解决Vue项目打包后文件过大问题 为什么打包后文件过大? 如何快速解决 一.路由懒加载[使用es6提案的import()方式] 二.CDN引入 为什么打包后文件过大? 移动app项目,使用vue- ...

  2. 关于vue项目打包后提示图片文件路径错误的解决方法

    vue项目打包后在production模式下提示图片 '404(not found),在dev环境下好好的,打包了就提示这个错误.这是为什么呢,以前第一次使用vue-cli构建项目的的时候只有两个图片 ...

  3. vue项目打包后修改接口地址

    vue项目打包后修改接口地址 我们在做vue项目时,总会遇到开发时用的测试地址和项目上线时用到的接口地址不同,再就是项目上线后,后期需要更改接口地址的情况.然而,如果没有一个配置文件,后期更换起来就只 ...

  4. vue html引入资源dev下404,webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)...

    最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报404错误...网上查找了一堆解决办法,总结如下 一.首先修改c ...

  5. php项目index页面空白,如何解决vue项目打包后打开页面空白的问题

    这篇文章主要介绍了vue项目打包后打开空白解决办法,内容挺不错的,现在分享给大家,也给大家做个参考. 网上很多说自己的VUE项目通过Webpack打包生成的list文件,放到HBulider打包后,通 ...

  6. (javascript)vue项目打包后,写的覆盖element的样式无效了。这是什么原因?

    问题: (javascript)vue项目打包后,写的覆盖element的样式无效了.这是什么原因?描述: 在开发模式模式下,写的覆盖样式都有效,打包后就无效,请问下是什么原因? main.js里的c ...

  7. vue项目打包后生成一个配置文件可以修改打包后的服务器api地址

    vue项目打包后生成一个配置文件可以修改打包后的服务器api地址 问题描述:vue项目打包上线之后,如果要改服务器api地址,只能在源码更改然后重新打包发布,为了解决这个问题,我们可以在static增 ...

  8. 打包后index.html路径错误,解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题...

    解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题 2018年05月23日 10:05:35 for_weber 阅读数:14179 Vue项目运行npm run buil ...

  9. Vue项目打包后不能正常显示页面

    项目场景: 通过 Vue CLI 创建的 vue 项目,编写完项目后,通过 npm run bulid 对项目进行打包,再把打包得到的内容(dist文件夹)交给后端部署到服务器上. 问题描述: 对 v ...

最新文章

  1. Java 多线程之单例设计模式
  2. 随机验证码。 * 随机生成十组六位字符组成的验证码。 * 验证码由大小写字母、数字字符组成。
  3. LeetCode7——Reverse Integer(将一个整数反转,注意溢出的处理)
  4. 频谱知识图谱:面向未来频谱管理的智能引擎人工智能技术与咨询
  5. python培训来袭_从入门到精通!2020年Python最佳学习路线重磅来袭!
  6. Windows 8虚拟机不能全屏的解决方法
  7. 洛谷P2585 [ZJOI2006]三色二叉树
  8. 常见图片格式与调色算法
  9. 201521145048 《Java程序设计》第3周学习总结
  10. 怎样设置才能允许外网访问MySQL
  11. jquery学习笔记之选择器
  12. python流程自动化_python selenium 自动化流程的一些总结与思考
  13. BAT中如何使用for循环
  14. VISIO各种图标超全(IT行业专用网络及硬件)_工业控制网络的现状
  15. C++ WindowsAPI 教程:MessageBox函数详解(原创)
  16. Java之棋牌游戏——编写一个斗地主洗牌发牌的程序,要求按照斗地主的规则完成洗牌发牌的过程
  17. HTML中嵌入视频和音频代码
  18. python 赚钱 知乎_2020年,小红书、知乎与B站谁能赚钱?
  19. BUUCTF刷题记录(持续更新中~)
  20. Git,一些基础命令说明

热门文章

  1. Cook,今天我们来学做菜
  2. php网站源码安装教程
  3. 记录使用Vue过程中的各种插件及教程(不定时更新)
  4. 兀r2对应的c语言表达式是什么,数据库原理 关系运算 习题答案
  5. MOTOROLA E6 内核开发手册
  6. 服务器重装需要备份哪些,重装\\更换网维大师服务器需要备份哪些文件-sxlz1990-ChinaUnix博客...
  7. 帝国时代2在windows7下面花屏的解决办法
  8. # 《致我的陌生恋人》
  9. keras中的compile()
  10. c#开发技术 中国象棋(单机)