Nginx减少带宽资源

Nginx减少带宽资源

静态资源压缩

如果图片过大压缩后模糊,建议使用图片分段形式展示:将图片分成多个 拼接组成一张 也就是等于原生图片;

传统的压缩方案:实际上对注释、空格去除、换成一行;

1、人工压缩

CSS/JS/IMG实现压缩地址:https://tool.oschina.net/jscompress/

2、Maven自动打包压缩 自动生成.min文件

1
2
#打开cmd:cd 目录地址
mvn yuicompressor:compress

3、Nginx自带压缩

1
2
3
4
5
6
7
gzip on;
gzip_buffers 32 4K;
gzip_comp_level 6;
gzip_min_length 100;
gzip_types application/javascript text/css text/xml;
gzip_disable "MSIE [1-6]\." #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_vary on;
1
2
3
4
5
6
7
8
9
10
11
配置文件内容详细介绍
gzip配置的常用参数
gzip on|off; #是否开启gzip
gzip_buffers 32 4K|16 8K #缓冲(压缩在内存中缓冲几块?每块多大?)
gzip_comp level[1-9] #推荐6压缩级别(级别越高,压的越小,越浪费cPu计算资源)
gzip_disable #正则匹配 UA什么样的Uri不进行gzip
gzip_min_length 200 #开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_http_version 1.0|1.1 #开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied #设置请求者代理服务器,该如何缓存内容
gzip_types text/plain application/xml #对哪些类型的文件用压缩 如txt,xml,html,css
gzip_vary on|off#是否传输gzip压缩标志

原理:使用字段匹配 将比较长的语法 function替换成非常短字典a

Nginx 压缩非常耗CPU

静态资源缓存控制

Http协议304缓存

客户端(浏览器)发送请求到服务器端 第一次访问会将所有的静态资源缓存到浏览器客户端(浏览器);

客户端发送第二次请求的时候 如果本地浏览器有缓存,就使用本地浏览器的;

Key:访问的 url value

如果远程的文件发生变化的情况下,就使用远程的;

如果该资源文件没有发生变化的情况下,不会重复向服务器端发送请求;

​ 注意:七牛云CDN可能会缓存静态资源,建议每次发布生产环境中加上时间戳;


大型电商商品详情页面如何设计

1.使用nginx缓存商品详情页面

版本控制解决方案:

A.使用版本号控制

B.手动清除Nginx缓存 需要物理删除

C.使用lua+openresty实现动态商品详情页面

客户端缓存(浏览器缓存)➡CDN缓存➡Nginx缓存➡JVM内置缓存➡Redis分布式缓存➡数据库
Redis与数据库一致性问题 mq 订阅 binlog 同步数据一致性问题
JVM与Redis保持一致性问题
Nginx缓存与服务器真实缓存一致性问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#	如果是以all开头只做反向代理不缓存到Nginx中
location /all {
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}

# 如果是以缓存开头的话,缓存到Nginx中
location /details {
#使用缓存名称
proxy_cache meitecache;
#对以下状态码实现缓存
proxy_cache_valid 200 206 304 301 302 1d;
#缓存的key
pro_cache_key $request_uri;
add_header X-Cache-Status $upstream_cache_statues;
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}

image-20260114230615220