vue-cli3 打包优化

vue-cli3 打包优化,第1张

当项目较大时往往会出现打包之后首屏加载时间较长,这样会导致用户体验较差,因此可以开启gzip压缩功能

1)如果是vue2.x,在vue项目中安装依赖并将config.js中的productionGzip改为true,开启Gzip压缩,npm install --save-dev compression-webpack-plugin

运行npm run build 打包项目,这时如果有提示报错ValidationError: Compression Plugin Invalid Options,则需要将build中的webpack.prod.conf.js中CompressionWebpackPlugin的设置由asset改为

filename,如图所示

再次运行npm run build打包,如果还有报错,提示TypeError: Cannot readproperty 'emit' of undefined。据我查证,是安装的compression-webpack-plugin依赖有问题,需要卸载compression-webpack-plugin更改安装低版本:npm install --save-dev compression-webpack-plugin@1.1.2

最后再次打包

当发现打包文件中有很多.gz的文件时即是打包成功,最后后端服务器开启gzip配置就愉快的配置完成,再次打开地址后会发现首屏速度快了很多

2)  如果是vue-cli3的项目,在开启gzip时会稍有区别,在vue.config.js 中配置,先安装依赖cnpm i -D compression-webpack-plugin

    

zoukankan html css js c++ java

nginx配置解决vue单页面打包文件大,首次加载慢的问题

cnpm run build 文件过大,其中主要是vender.js有1.5M,代码部署到服务器,首次访问加载页面时比较慢,耗时6.5s左右,所以需要优化下。

1、Nginx开启gzip

找到nginx.config。关于gzip压缩代码:

http {

gzip on#开启或关闭gzip on off

gzip_disable "msie6"#不使用gzip IE6

gzip_min_length 100k#gzip压缩最小文件大小,超出进行压缩(自行调节)

gzip_buffers 4 16k#buffer 不用修改

gzip_comp_level 3#压缩级别:1-10,数字越大压缩的越好,时间也越长

gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png# 压缩文件类型

gzip_vary off #跟Squid等缓存服务有关,on的话会在Header里增加 "Vary: Accept-Encoding"

}

配置完重启Nginx

识别gzip与非gzip请求

gzip请求:

非gzip请求:

gzip与非gzip在响应头中区别就是Content-Encoding是否表明是gzip压缩格式。

而上面通过接收数据与实际数据大小相比也能明显看出差异

2、webpack gzip

vue项目中config/index.js

productionGzip: true, //是否开启gizp压缩

productionGzipExtensions: ['js', 'css'],

开启后cnpm run build会生成*.gz文件。

上传到服务器,测试查看接受文件大小。发现接收依然是1.5M的,而不是469K的,

莫非,webpack打包gzip文件毫无卵用?

3、gzip_static 静态压缩

经过一番百度,得一宝贝,gzip_static。什么东东呢?字面上意思就是:gzip静态。

卖个关子:上面配置了,Nginx是可以开启gzip压缩,而且能够实现压缩效果。而它是如何工作的呢?

客户端发起请求

-》Nginx接收请求

-》Nginx加载文件进行gzip打包压缩成*.gz

-》返回给浏览器

-》浏览器解压*.gz (应该是它干的,反正看不见)

  也就是说,每次请求,Nginx都会进行压缩返回、压缩返回、压缩返回、 将会导致浪费大量CPU。

  这么个大bug是谁设计的?如果请求量大,CPU会不会挂掉?//猜测

  当然,并不会,gizp打包压缩后会临时缓存,

  所以,能不消耗CPU就不消耗CPU。

  废话太多,步入正题。放大招!!

http {

gzip on#开启或关闭gzip on off

gzip_static on#是否开启gzip静态资源

gzip_disable "msie6"#不使用gzip IE6

gzip_min_length 100k#gzip压缩最小文件大小,超出进行压缩(自行调节)

gzip_buffers 4 16k#buffer 不用修改

gzip_comp_level 3#压缩级别:1-10,数字越大压缩的越好,时间也越长

gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png# 压缩文件类型

gzip_vary off #跟Squid等缓存服务有关,on的话会在Header里增加 "Vary: Accept-Encoding"

}

重启nginx,访问服务器效果:变成459K了,耗时也少了不少

所以开启gzip_static后。流程就会变成

//偷懒写法

if(*.gz){

return *.gz //懒得压缩直接扔文件

}else{

return gzip() //压缩再扔给浏览器

}

nginx的gzip压缩力度从1-9 。如果开启过大,CPU会严重浪费,而webpack压缩gzip默认是9。因此,打包压缩gzip静态资源是很有必要的。

补充一点:Gzip文件压缩,如果不安装那个插件,build是会报错的,详细如下:

Gzip 文件压缩

顺带分享一个很6的优化打包的方法,用起来也简单的很,只要下载一个插件,然后打开一个设置就好了。

设置方法:

这里其实是webpack自带的一个优化打包的方法,在打包的时候,每个js和css文件会压缩一个gz后缀的文件夹,浏览器如果支持g-zip,会自动查找有没有gz文件,找到了就加载gz,然后本地解压执行。

打开这个配置会之后对整体的打包体积也就是dist文件夹并没有太大的变化。下图来看看他的压缩率以及对加载的提升,可以说是非常大且明显的,大家可以自己试一下就知道多好用了。

相关阅读:

Linux磁盘分区MBR分区

win10 1809磁盘占用总是100%

LINUX系统的7种运行级别

【工作环境】公司主域控硬盘损坏后的维修步骤

程序员的一些人生感悟

dispatch_get_main_queue 的同步异步问题

虚拟机VirtualBox中Ubuntu无法全屏解决方法

十大报错、报异常、跑不起来原因

关于scrollbarfacecolor只支持ie的解决方法

一个严肃的面试经验

原文地址:https://www.cnblogs.com/goloving/p/9170269.html

最新文章

vue 中$index $key 已经移除了

Sublime Text3自动保存的功能(失去焦点自动保存)

创建git密钥的时候提示 too many arguments

pc端有弹出层 并有滚动的时候遇到的问题以及解决

WAMP 403 Forbidden禁止访问,别的电脑访问不了;

遇到一张jpg的图片打不开,ps打不开,fireworks,打不开,ie8浏览器上显示不了,其他的浏览器没问题

实例构造器和类(引用类型)

静态工厂、工厂方法、抽象工厂

常量和字段

BADIs 概览

热门文章

BADIs 实现&小例

BADIs 查找

BADIs 实现原理

BADIs Filter Dependent/Multiple Use

CentOS7 搭建AmbariServer,安装Hadoop集群(一)

Centos 7部署大众点评CAT(一)——单服务器部署

linux内存随笔

sudo日志审计

man帮助命令

MBR和GPT分区学习

Copyright © 2011-2022 走看看


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/624852.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-16
下一篇2023-07-16

发表评论

登录后才能评论

评论列表(0条)

    保存