Nginx实现静态资源压缩的方法详解

 更新时间:2024年02月02日 08:20:46   作者:铿然架构  
静态资源过大,下载耗时导致页面打开慢,希望通过压缩减小文件大小,提升下载速度,所以本文给大家介绍了Nginx实现静态资源压缩的方法,并通过代码示例给大家介绍的非常详细,需要的朋友可以参考下

1. 概述

1.1 背景

静态资源过大,下载耗时导致页面打开慢,希望通过压缩减小文件大小,提升下载速度。

1.2 压缩方式

Nginx压缩支持两种方式,静态压缩和动态压缩。

● 静态压缩

是先把js、css等文件压缩为.gz文件,客户端访问时会自动下载.gz文件,并在客户端自动解压后访问。

● 动态压缩

客户端发起请求时,nginx动态将js、css文件压缩后返回给客户端,客户端收到后自动解压并访问。

2. 实现

Nginx版本:1.24.0

2.1 静态压缩

我们以Vue3为例子来说明整个实现过程。

2.1.1 压缩Vue3资源文件

● 安装压缩插件

npm install vite-plugin-compression

● 插件配置

vite.config.ts/js 中导入vite-plugin-compression插件和配置

import vue from '@vitejs/plugin-vue'
import viteCompression from 'vite-plugin-compression'

export default {
  plugins: [
    vue(), 
	
	// 下面是压缩插件配置
    viteCompression({
      filter: /\.(js|css|json|txt|ico|svg)(\?.*)?$/i, // 需要压缩的文件
      threshold: 1024, // 文件容量大于这个值进行压缩
      algorithm: 'gzip', // 压缩方式
      ext: 'gz', // 后缀名
      deleteOriginFile: true, // 压缩后是否删除压缩源文件,false不删除
    })
  ], 
  // 其他配置省略
}

注意不要压缩*.html文件,否则访问时会报403错误,即使添加如下配置也会报错:

● 打包

npm run build

输出文件后,部署到nginx的静态资源文件目录:

2.1.2 Nginx配置

● 启用静态压缩功能

在http块或server块增加如下配置则可:

    gzip_static on; # 只需要加这一个配置

● 配置静态资源目录

压缩后的文件部署到自定义目录下:

	location / {
       root   /site/static;
       index  index.html index.htm;
    }

2.2 动态压缩

在http块或server块增加如下配置则可:

    # 开启动态压缩功能
	gzip on;
	
	# 压缩级别
	gzip_comp_level 6;
	
	# 哪些类型的文件需要压缩
	gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

3. 验证

3.1 压缩和未压缩性能对比

3.1.1 本机测试

如下是一个压缩和不压缩对比的例子:

可以看到,压缩后的传输数据变小了,但是加载时间并没有减少,说明压缩/解压缩也需要时间,至于哪种方式更快,取决于网络耗时和压缩耗时的具体大小。

3.1.2 公网测试

压缩前:

压缩后:

可以看到在压缩后体积减小,加载时间也变短了。

3.2 识别静态压缩和动态压缩

● 静态压缩

● 动态压缩

4. 总结

● 压缩后未必一定能提升页面打开速度,需要比较网络耗时和压缩耗时时间,哪个更省时。

● 动态压缩会消耗nginx的处理性能,如果能静态压缩,可以优先考虑使用静态压缩。(可以参考自行实测结果)

● 动态压缩和静态压缩可以同时使用,有静态压缩文件就使用,没有则动态压缩。

以上就是Nginx实现静态资源压缩的方法详解的详细内容,更多关于Nginx静态资源压缩的资料请关注脚本之家其它相关文章!

相关文章

  • nginx 502、413和404错误原因排查和解决办法总结

    nginx 502、413和404错误原因排查和解决办法总结

    这篇文章主要给大家介绍了NGINX 502错误排查,办法总结,Nginx 413错误的排查以及Nginx 400错误排查,文中通过代码示例给出了详细的排查方法和解决方案,需要的朋友可以参考下
    2023-12-12
  • Nginx 禁止IP访问如何实现

    Nginx 禁止IP访问如何实现

    这篇文章主要介绍了Nginx 禁止IP访问如何实现的相关资料,需要的朋友可以参考下
    2017-02-02
  • nginx location/区别详解

    nginx location/区别详解

    本文主要介绍了nginx location/区别详解,主要介绍了8中不同的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • nginx配置文件详解中文版

    nginx配置文件详解中文版

    这篇文章主要介绍了nginx配置文件nginx.conf的配置参数详解,并增加了中文版注释,需要的朋友可以参考下
    2014-03-03
  • centos8中使用yum安装nginx的详细过程

    centos8中使用yum安装nginx的详细过程

    这篇文章主要介绍了centos8中怎样使用yum安装 nginx,centos8和centos7安装nginx有点点不一样,centos8 自带了nginx 1.14.1 ,我们先升级到新稳定版1.20.1,具体安装方法跟随小编一起学习下吧
    2023-03-03
  • Nginx限制IP并发数与下载速度的方法

    Nginx限制IP并发数与下载速度的方法

    这篇文章主要介绍了Nginx中限制IP并发数与下载速度的方法,用到了limit_zone、limit_rate和limit_conn模块,有需要的朋友参考下
    2014-01-01
  • nginx基于IP的多虚拟主机实现

    nginx基于IP的多虚拟主机实现

    如果同一台服务器有多个IP,可以使用基于IP的虚机主机配置,将不同的服务绑定在不同的IP上,本文主要介绍了nginx基于IP的多虚拟主机实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Nginx 的多站点配置方案

    Nginx 的多站点配置方案

    这篇文章主要介绍了Nginx 的多站点配置方案,需要的朋友可以参考下
    2017-07-07
  • ELK监控nginx日志的整体流程

    ELK监控nginx日志的整体流程

    这篇文章主要介绍了ELK监控nginx日志总结,整体流程是先把logstash启动,读取nginx日志数据存储到ES中,再用kibana进行统计以及可视化,本文给大家介绍的非常详细,需要的朋友参考下吧
    2022-03-03
  • Nginx防止直接用IP访问Web服务器的设置方法

    Nginx防止直接用IP访问Web服务器的设置方法

    看了很多Nginx的配置,好像都忽略了ip直接访问Web的问题,这样理论上不利于SEO优化,所以我们希望可以避免直接用IP访问网站,而是域名访问,具体怎么做呢,看下面
    2012-09-09

最新评论