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


Posted in Javascript onJanuary 16, 2018

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

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;
  }
}

参考页面:https://router.vuejs.org/zh-cn/essentials/history-mode.html

cnpm run build 文件过大

打包生成文件:

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

浏览器访问效果:

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

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

浏览器访问效果:

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

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

识别gzip与非gzip请求

gzip请求:

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

非gzip请求:

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

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

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

webpack gzip

vue项目中config/index.js

productionGzip: true, //是否开启gizp压缩
productionGzipExtensions: ['js', 'css'],

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

像这样:

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

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

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

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

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

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

gzip_static 静态压缩

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

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

卖个关子:

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

客户端发起请求

-》Nginx接收请求

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

-》返回给浏览器

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

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

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

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

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

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

  nginx.conf 

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"
}

emmmmmmmm.....重启nginx

OK。上图!

before:

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

after:

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

对比文件:

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

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

//偷懒写法。。。。。if(*.gz){
 return *.gz //懒得压缩直接扔文件
}else{
 return gzip() //压缩再扔给浏览器 
}

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

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

Javascript 相关文章推荐
JavaScript的继承的封装介绍
Oct 15 Javascript
Javascript 按位左移运算符使用介绍(
Feb 04 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
如何正确使用javascript 来进行我们的程序开发
Jun 23 Javascript
jquery制作 随机弹跳的小球特效
Feb 01 Javascript
Prototype框架详解
Nov 25 Javascript
js轮盘抽奖实例分析
Apr 17 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
Mar 06 Javascript
js如何获取网页所有图片
May 12 Javascript
解决linux下node.js全局模块找不到的问题
May 15 Javascript
Vue文件配置全局变量的实例
Sep 06 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
详解layui中的树形关于取值传值问题
Jan 16 #Javascript
基于JavaScript实现抽奖系统
Jan 16 #Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 #Javascript
浅谈vue的props,data,computed变化对组件更新的影响
Jan 16 #Javascript
Parcel 打包示例(React HelloWorld)
Jan 16 #Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 #Javascript
vue watch自动检测数据变化实时渲染的方法
Jan 16 #Javascript
You might like
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
PHP 编程的 5个良好习惯
2009/02/20 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
python处理csv数据的方法
2015/03/11 Python
python获取从命令行输入数字的方法
2015/04/29 Python
将python代码和注释分离的方法
2018/04/21 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
python3.9和pycharm的安装教程并创建简单项目的步骤
2021/02/03 Python
服装设计行业个人的自我评价
2013/12/20 职场文书
文明家庭先进事迹材
2014/01/27 职场文书
大学生创业计划书
2014/08/14 职场文书
政风行风评议整改方案
2014/09/15 职场文书
龙门石窟导游词
2015/02/02 职场文书
学生会自荐信
2019/05/16 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
Android存储中最基本的文件存储方式
2022/04/30 Java/Android