Nginx减少带宽资源
静态资源压缩
如果图片过大压缩后模糊,建议使用图片分段形式展示:将图片分成多个 拼接组成一张 也就是等于原生图片;
传统的压缩方案:实际上对注释、空格去除、换成一行;
1、人工压缩
CSS/JS/IMG实现压缩地址:https://tool.oschina.net/jscompress/
2、Maven自动打包压缩 自动生成.min文件
1 2
| 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
| location /all { proxy_pass http://127.0.0.1:8080; index index.html index.htm; }
location /details { proxy_cache meitecache; proxy_cache_valid 200 206 304 301 302 1d; 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; }
|
