找到nginx多网站配置文件:相似nginx/sites-available/www.baidu.comjavascript
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.htmlphp
打包生成文件:css
浏览器访问效果:html
找到nginx.config。关于gzip压缩代码:vue
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"
}
配置完重启Nginxjava
浏览器访问效果:webpack
上面为数据流接收大小,下面为解压后实际大小。nginx
gzip请求:web
非gzip请求:npm
gzip与非gzip在响应头中区别就是Content-Encoding是否代表是gzip压缩格式。
而上面经过接收数据与实际数据大小相比也能明显看出差别
vue项目中config/index.js
productionGzip: true, //是否开启gizp压缩 productionGzipExtensions: ['js', 'css'],
上传到服务器,测试查看接受文件大小。
gzip相应539kb。并不是加载app.........gz的 412kb
删除*.gz文件,依旧539kb。
莫非,webpack打包gzip文件毫无卵用??????
通过一番百度。得一宝贝。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静态资源 #nginx对于静态文件的处理模块,该模块能够读取预先压缩的gz文件,这样能够减小每次请求进行gzip压缩的CPU资源消耗。该模块启用后,nginx首先检查是否存在请求静态文件的gz结尾的文件,若是有则直接返回该gz文件内容。为了要兼容不支持gzip的浏览器,启用gzip_static模块就必须同时保留原始静态文件和gz文件。这样的话,在有大量静态文件的状况下,将会大大增长磁盘空间。咱们能够利用nginx的反向代理功能实现只保留gz文件。
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:
after:
对比文件:
so 。开启gzip_static后。流程就会变成
//偷懒写法。。。。。
if(*.gz){ return *.gz //懒得压缩直接扔文件 }else{ return gzip() //压缩再扔给浏览器 }
nginx的gzip压缩力度从1-9 。若是开启过大,CPU会严重浪费,而webpack压缩gzip默认是9.所以,打包压缩gzip静态资源是颇有必要的
因此,按需加载暂时不用考虑了
参考网页:并未好好看