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实现上游服务器动态自动上下线无需reload的实现方法
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Linux安装Nginx步骤详解
Mar 31 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
nginx日志格式分析和修改
Apr 28 Servers
聊聊配置 Nginx 访问与错误日志的问题
May 25 Servers
使用Nginx+Tomcat实现负载均衡的全过程
May 30 Servers
服务器SVN搭建图文安装过程
Jun 21 Servers
在虚拟机中安装windows server 2008的图文教程
Jun 28 Servers
阿里云服务器(windows)手动部署FTP站点详细教程
Aug 05 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 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
让您的菜单不离网站
2006/10/03 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
详解Python编程中基本的数学计算使用
2016/02/04 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python中的变量如何开辟内存
2018/06/26 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
Python  word实现读取及导出代码解析
2020/07/09 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
工程采购员岗位职责
2014/03/09 职场文书
教务处教学工作总结
2015/08/10 职场文书
单位病假条范文
2015/08/17 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android