Nginx静态压缩和代码压缩提高访问速度详解


Posted in Servers onMay 30, 2022

前言

基于目前大部分的应用,都使用了前后端分离的框架,vue的前端应用,也是十分的流行。

不知道大家伙,有无遇到这样的问题:

随着前端框架的页面,功能开发不断的迭代;安装的依赖,不断的增多;

这样导致的问题,就是我们的前端框架,会变得十分庞大,打包出来的dist目录会变得很大了喔!!!

这样就会导致一个问题:首次访问应用,会变得很慢!!!

这确实是一个严重的问题!!!T_T

对于这个问题,咋们今天就从代码压缩+nginx静态资源压缩,两个方面进行研究解决!!!

nginx静态资源动态压缩

  • nginx开启gzip压缩
server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
        server_tokens off;

        # 开启gzip压缩
        gzip on;
        gzip_disable "msie6";
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain application/css text/css application/xml text/javascript application/javascript application/x-javascript;
        
        #llsydn 前端
        location /jxbp {           
             alias  /opt/llsydn/jxbp;
             index index.html;
             try_files $uri $uri/ /dist/index.html;
        }
 }

然后重启nginx:nginx -s reload

看看是否已经生效!!!

  • 压缩的效果图

Nginx静态压缩和代码压缩提高访问速度详解

  • 没有压缩的效果图:

Nginx静态压缩和代码压缩提高访问速度详解

从上面两张图可以看到:

第一张经过压缩:finish时间为2.36s,transferred为7.6MB

第二张没有压缩:finish时间为6.32s,transferred为24.6MB

很明显,经过了nginx的静态资源压缩,访问速度提高了,显著的!!!

看到这,咋们会有这样的一个问题,这压缩都是nginx干的活,那当访问量变大,那对于nginx的压力,是十分大的,毕竟都是动态压缩的!!!

那有无解决方法呢?

nginx静态资源动态压缩的原理,无非就帮我们将js、css等文件,压缩为一个.gz文件,然后传输给前端浏览器,进行解析。

说到这,咋们不禁会说:那咋们先将js、css等文件,生成对应的.gz文件,不就不需要nginx动态压缩了嘛?

好像是这么一回事!!!

天才呀!!!

nginx静态资源静态压缩

  • 将js、css等文件,生成对应的.gz文件

这个,就可以借助一些依赖进行处理了:compression-webpack-plugin

安装依赖:

npm install compression-webpack-plugin -D
  • vue.config.js
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
vueConfig.configureWebpack.plugins.push(new CompressionWebpackPlugin({
    test:/.js$|.html$|.\css/, // 匹配文件名
    threshold: 1024, // 对超过1k的数据压缩
    deleteOriginalAssets: false // 不删除源文件
}))

打包:

npm run build

Nginx静态压缩和代码压缩提高访问速度详解

可以看到,已经帮我们生成对应的.gz文件了!!!

  • nginx配置

在上面的基础上,再加上

gzip_static on

  • nginx得安装下面得模块:
ngx_http_gzip_module模块
ngx_http_gzip_static_module模块
ngx_http_gunzip_module模块
  • nginx开启gzip压缩
server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
        server_tokens off;

        # 开启gzip压缩
        gzip on;
        gzip_static on
        gzip_disable "msie6";
        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain application/css text/css application/xml text/javascript application/javascript application/x-javascript;
        
        #llsydn 前端
        location /jxbp {           
             alias  /opt/llsydn/jxbp;
             index index.html;
             try_files $uri $uri/ /dist/index.html;
        }
 }

然后重启nginx:nginx -s reload

看看是否已经生效!!!

  • 静态压缩

Nginx静态压缩和代码压缩提高访问速度详解

  • 动态压缩

Nginx静态压缩和代码压缩提高访问速度详解

好了,nginx的静态压缩,就到这里了!!!

总结

到此这篇关于Nginx静态压缩和代码压缩提高访问速度的文章就介绍到这了!


Tags in this post...

Servers 相关文章推荐
Nginx域名转发使用场景代码实例
Mar 31 Servers
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
Nov 17 Servers
NGINX 权限控制文件预览和下载的实现原理
Jan 18 Servers
Apache Linkis 中间件架构及快速安装步骤
Mar 16 Servers
Kubernetes控制节点的部署
Apr 01 Servers
Consul在linux环境的集群部署
Apr 08 Servers
配置nginx负载均衡
May 06 Servers
shell进度条追踪指令执行时间的场景分析
Jun 16 Servers
win sever 2022如何占用操作主机角色
Jun 25 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 Servers
Nginx如何配置根据路径转发详解
Jul 23 Servers
Apache自带的ab压力测试工具的实现
Jul 23 Servers
Nginx 配置 HTTPS的详细过程
May 30 #Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 #Servers
聊聊配置 Nginx 访问与错误日志的问题
May 25 #Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
详解Nginx的超时keeplive_timeout配置步骤
May 25 #Servers
nginx 配置指令之location使用详解
May 25 #Servers
zabbix配置nginx监控的实现
May 25 #Servers
You might like
php字符串截取的简单方法
2013/07/04 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
js和jquery批量绑定事件传参数一(新猪猪原创)
2010/06/23 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
Python字符串和文件操作常用函数分析
2015/04/08 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
Django windows使用Apache实现部署流程解析
2020/10/12 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
大学校庆邀请函
2014/01/11 职场文书
入党自我评价范文
2014/02/02 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
文明礼仪标语
2014/06/13 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
Python深度学习之实现卷积神经网络
2021/06/05 Python