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简单配置多个server的方法
Mar 31 Servers
nginx限制并发连接请求数的方法
Apr 01 Servers
Rhit高效可视化Nginx日志查看工具
Nov 01 Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 Servers
Nginx实现负载均衡的项目实践
Mar 18 Servers
Mac电脑OS系统下安装Nginx的详细教程
Apr 14 Servers
Windows Server 2012配置DNS服务器的方法
Apr 29 Servers
使用Nginx+Tomcat实现负载均衡的全过程
May 30 Servers
nginx设置资源请求目录的方式详解
May 30 Servers
windows server 2016 域环境搭建的方法步骤(图文)
Jun 25 Servers
kubernetes集群搭建Zabbix监控平台的详细过程
Jul 07 Servers
源码安装apache脚本部署过程详解
Sep 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实现Ftp用户的在线管理的代码
2007/03/06 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python装饰器原理与用法分析
2018/04/30 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
Python之字典对象的几种创建方法
2020/09/30 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
运动会稿件300字
2014/02/14 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
2014年采购工作总结
2014/11/20 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js