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开启Brotli压缩算法实现过程详解
Mar 31 Servers
nginx简单配置多个server的方法
Mar 31 Servers
Nginx进程管理和重载原理详解
Apr 22 Servers
详解Nginx 被动检查服务器的存活状态
Oct 16 Servers
Nginx中使用Lua脚本与图片的缩略图处理的实现
Mar 18 Servers
了解Kubernetes中的Service和Endpoint
Apr 01 Servers
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 Servers
Tomcat执行startup.bat出现闪退的原因及解决办法
Apr 20 Servers
WIN10使用IIS部署ftp服务器详细教程
Aug 05 Servers
nginx配置指令之server_name的具体使用
Aug 14 Servers
Nginx如何配置多个服务域名解析共用80端口详解
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
做一个有下拉功能的留言版
2006/10/09 PHP
php写的简易聊天室代码
2011/06/04 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
2014/06/12 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
javascript生成大小写字母
2015/07/03 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python 的topk算法实例
2020/04/02 Python
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
实习期自我鉴定
2013/10/11 职场文书
车间班组长的职责
2013/12/13 职场文书
思想专业自荐信范文
2013/12/25 职场文书
好家长事迹材料
2014/01/23 职场文书
活动策划邀请函
2014/02/06 职场文书
早会主持词
2014/03/17 职场文书
财产公证书格式
2014/04/10 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
2014年国庆节演讲稿
2014/09/02 职场文书
MySQL查询日期时间
2022/05/15 MySQL