7. Nginx gzip 静态资源压缩

7. Nginx gzip 静态资源压缩

注意:
	Nginx的Gzip压缩功能虽然好用,但是下面两类文件资源不太建议启用此压缩功能。

	1) 图片类型资源 (还有视频文件)

	原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。
		(可以试试将一张jpg图片压缩为zip,观察大小并没有多大的变化。虽然zip和gzip算法不一样,但是可以看出压缩图片的价值并不大)

	2) 大文件资源

	原因:会消耗大量的cpu资源,且不一定有明显的效果。
# 在 HTML 目录下创建一个测试文件,并写入测试内容
touch test.html
echo {1..999999} >> test.html

在这里插入图片描述

测试:
在未配置 gzip 压缩模块时,使用浏览器访问测试,访问数据就是实际文件大小

在这里插入图片描述

# 修改 nginx.conf 配置文件,在 http{} 模块中增加 gzip 功能
#gzip模块设置
    gzip on; 				# 开启gzip压缩输出
    gzip_min_length 1k;		# 最小压缩文件大小,低于1kb不压缩
    gzip_buffers 4 16k;    	# 以16k为单位,按照原始数据的大小以4倍的方式申请内存空间,一般此项不要修改
    gzip_http_version 1.1;	# 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_comp_level 2;    	# 压缩等级,压缩等级越低,效率越高,但是对于CPU性能负载也越高
    #需要压缩的常见静态资源
	gzip_types text/plain application/javascript   application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
	gzip_disable "MSIE [1-6]\.";	# 由于nginx的压缩发生在浏览器端而微软的ie6会导致压缩后图片看不见,所以该选项是禁止 ie6 发生压缩
	
	
# 重新加载
nginx -s reload

在这里插入图片描述

测试:
	配置 gzip 模块后再次访问测试
	访问时间和文件大小都有比较明显的变化

在这里插入图片描述

### 如何配置 Nginx 实现静态文件 gzip 压缩 #### 配置 Gzip 动态压缩模块 Nginx 默认安装 `ngx_http_gzip_module` 模块,该模块负责处理动态压缩。为了启用此功能,在 nginx.conf 文件中的 http、server 或者 location 上下文中加入如下指令: ```nginx http { ... gzip on; gzip_types text/plain application/xml; } ``` 上述设置启用了 gzip 并指定了要被压缩的内容类型[^1]。 #### 使用预压缩技术减少 CPU 负载 为了避免每次请求都进行实时压缩带来的额外开销,推荐预先准备好 `.gz` 扩展名的压缩版本并放置于 Web 服务器上相同路径位置。此时应引入另一个专门用于处理这些预压缩文件的模块——`http_gzip_static_module`: ```nginx http { ... # 开启预压缩支持 gzip_static on; # 当客户端不接受gzip编码时回退至原始文件 gzip_vary on; # 设置哪些代理情况应该执行压缩 gzip_proxied any; } ``` 这段配置使得当存在同名`.gz`结尾的文件时优先返回它们;如果没有找到对应的压缩版,则继续尝试未压缩的形式发送给客户机。 #### 测试与生效新配置 完成以上更改之后,记得保存修改过的配置文件并通过命令行工具来验证其有效性以及使新的设定立即起效: ```bash # 检查配置是否有误 nginx -t # 如果测试无错可平滑重启服务让改动即时生效 nginx -s reload ``` 这样就完成了针对特定类型的静态资源开启高效的 gzip 压缩传输过程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值