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常用命令放入shell脚本详解
Mar 31 Servers
Nginx反向代理多个服务器的实现方法
Mar 31 Servers
解决Nginx 配置 proxy_pass 后 返回404问题
Mar 31 Servers
阿里云Nginx配置https实现域名访问项目(图文教程)
Mar 31 Servers
Nginx配置Https安全认证的实现
May 26 Servers
nginx中proxy_pass各种用法详解
Nov 07 Servers
nginx中封禁ip和允许内网ip访问的实现示例
Mar 17 Servers
Windows Server 2012 修改远程默认端口3389的方法
Apr 28 Servers
服务器间如何实现文件共享
May 20 Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
May 25 Servers
openEuler 搭建java开发环境的详细过程
Jun 10 Servers
在windows server 2012 r2中安装mysql的详细步骤
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
怎样在UNIX系统下安装php3
2006/10/09 PHP
php设计模式小结
2013/02/15 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
php图像验证码生成代码
2017/06/08 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
定义select的边框颜色
2008/04/28 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Python OpenCV实现视频分帧
2019/06/01 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
在python中修改.properties文件的操作
2020/04/08 Python
浅谈django 重载str 方法
2020/05/19 Python
使用Python-OpenCV消除图像中孤立的小区域操作
2020/07/05 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
英语教学随笔感言
2014/02/20 职场文书
党员自我对照检查材料
2014/08/19 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
python APScheduler执行定时任务介绍
2022/04/19 Python
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript