vue加载nginx内存狂涨不加载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue加载nginx内存狂涨不加载相关的知识,希望对你有一定的参考价值。
zoukankan html css js c++ javanginx配置解决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 走看看 参考技术A 原因是我们在vue打包的过程中打包了一些没有用的东西,造成数据量过大使得页面加载速度超级慢的原因,最常见的页面加载速度就就 看板,这种页面。
什么时候重启而不重新加载 Nginx?
【中文标题】什么时候重启而不重新加载 Nginx?【英文标题】:When to restart and not reload Nginx? 【发布时间】:2012-11-11 14:31:19 【问题描述】:什么时候需要重启nginx,reload就不行了? 如果使用像passenger 这样的扩展名会有什么不同吗?
如果服务消耗太多内存,是否应该重新启动服务。重启 Nginx 的任何其他原因,尤其是在扩展或 Nginx 核心配置中的配置更改之后?
在进行配置更改后,可以通过 binary 本身或 Ubuntu 上的 init.d 脚本“/etc/init.d/nginx -h”重新启动或重新加载 nginx。应该首选哪种方法?
【问题讨论】:
我不明白你的最后一段。这是一个问题吗? 【参考方案1】:重新加载 nginx 比重新启动更安全,因为在终止旧进程之前,会解析新的配置文件,如果有任何问题,整个进程都会中止。
另一方面,当你重新启动 nginx 时,你可能会遇到由于语法错误而导致 nginx 停止并且不会重新启动的情况。
重新加载会终止旧进程,因此无论如何都应该清除任何内存泄漏。
【讨论】:
像modrails.com/documentation/Users%20guide%20Nginx.html 这样的 ngixn 扩展会有什么不同吗? 嗯,当使用乘客时,通常更明智的做法是重新启动应用程序服务器而不是 Web 服务器(在这种情况下,通过触摸tmp/restart.txt
文件),但除此之外它应该完全一样。
如果我在nginx -t
之前检查语法怎么办?那有什么区别呢?
来自 nginx 指南:一旦主进程接收到重新加载配置的信号,它会检查新配置文件的语法有效性并尝试应用其中提供的配置。如果这是成功的,主进程启动新的工作进程并向旧的工作进程发送消息,请求它们关闭。否则,主进程将回滚更改并继续使用旧配置。【参考方案2】:
我遇到过需要重新启动 nginx 才能让 listen
指令启动新 IP 地址的情况。
【讨论】:
我刚才也有同样的经历……我快疯了,直到我想通了!!【参考方案3】:Ztyx 是对的——在某些情况下需要在更改监听指令时重新启动。
使用1.6.x,更改监听IP地址时可以重新加载,但从“*:80”监听到IP地址“x.x.x.x:80”时需要重新加载。
我只用 IPv4 确认了这一点,IPv6 的行为可能类似。
【讨论】:
以上是关于vue加载nginx内存狂涨不加载的主要内容,如果未能解决你的问题,请参考以下文章