vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)

前端之家收集整理的这篇文章主要介绍了vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_301_0@  找到Nginx多网站配置文件:类似 Nginx/sites-available/www.baidu.com


<div class="jb51code">
<pre class="brush:js;">
server {
listen 80;
index index.html index.htm index.Nginx-debian.html;
server_name www.baidu.com;
location / {
root /mnt/www/www.baidu.com;
   try_files $uri $uri/ /index.html;
}
}

@H_301_0@参考页面

@H_
301_0@

cnpm run build 文件过大

@H_301_0@  打包生成文件

@H_301_0@  浏览器访问效果

@H_301_0@

Nginx开启gzip

@H_301_0@  找到Nginx.config。关于gzip压缩代码

关闭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" }
@H_301_0@

  配置完重启Nginx

@H_301_0@  浏览器访问效果

@H_301_0@  上面为数据流接收大小,下面为解压后实际大小。

@H_301_0@

识别gzip与非gzip请求

@H_301_0@  gzip请求:

@H_301_0@  非gzip请求:

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

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

@H_301_0@

webpack gzip

@H_301_0@  vue项目中config/index.js

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

@H_301_0@像这样:

@H_301_0@  上传到服务器,测试查看接受文件大小。

@H_301_0@  gzip相应539kb。并非加载app.........gz的 412kb

@H_301_0@  删除*.gz文件,依旧539kb。

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

@H_301_0@

gzip_static 静态压缩

@H_301_0@  经过一番百度。得一宝贝。gzip_static

@H_301_0@  什么东东呢?字面上意思就是:gzip静态。

@H_301_0@  卖个关子:

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

@H_301_0@    客户端发起请求

@H_301_0@      -》Nginx接收请求

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

@H_301_0@          -》返回给浏览器

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

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

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

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

@H_301_0@    所以,能不消耗cpu就不消耗cpu

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

@H_301_0@    Nginx.conf 

关闭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" }
@H_301_0@  emmmmmmmm.....重启Nginx

@H_301_0@  OK。上图!

@H_301_0@  before:

@H_301_0@  after:

@H_301_0@  对比文件

@H_301_0@  so 。开启gzip_static后。流程就会变成

文件 }else{ return gzip() //压缩再扔给浏览器 }
@H_301_0@  

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

@H_301_0@  所以,按需加载暂时不用考虑了

@H_301_0@  

猜你在找的Vue相关文章