nginx-nginx的缓存集成

缓存的概念

缓存就是数据交换的缓冲区,被称作cache,访用户想要获取数据时,就会先从缓存中去查询数据,如果缓存中有就会直接返回给用户,若果缓存中没有,则会发出请求从服务器中重新查询数据,将数据返回给用户的同时将数据放入缓存,下次用户就会直接从缓存中获取数据,节省资源访问的时间

缓存的使用场景

场景 作用
OS磁盘缓存 减少磁盘机械操作
数据库缓存 减少文件系统的IO操作
应用程序缓存 减少对数据库的查询
Web服务器缓存 减少对应用服务器请求次数
浏览器缓存 减少与后台的交互次数
[缓存使用场景表]

缓存的优缺点

缓存的优点

提高性能

  • 缓存技术通过存储经常访问的数据,显著减少了访问原始数据源(如数据库或远程服务器)的次数,从而加快了数据访问速度。
  • 在Web应用中,缓存可以减少服务器响应时间,提高页面加载速度,提升用户体验。

减轻服务器负载

  • 通过将频繁请求的数据存储在缓存中,服务器可以减少处理请求的数量,从而降低负载。
  • 这有助于防止服务器过载,提高系统的稳定性和可靠性。

降低网络延迟

  • 缓存技术可以减少网络数据传输量,从而降低网络延迟。
  • 对于远程服务或分布式系统,缓存可以显著提高通信效率。

节省成本

  • 通过提高性能和减轻服务器负载,缓存技术可以延长硬件的使用寿命,减少升级和维护成本。
  • 在一些情况下,缓存还可以减少带宽费用,因为需要传输的数据量减少了。

缓存的缺点

数据一致性问题

  • 缓存中的数据可能与原始数据源不一致,特别是在数据频繁更新或删除的情况下。
  • 这可能导致用户看到过时或错误的信息。

缓存穿透

  • 如果缓存中没有存储某个请求所需的数据,并且该数据在原始数据源中也不存在,那么每次请求都会绕过缓存直接访问原始数据源,导致缓存失效。
  • 这可能发生在攻击者故意请求不存在的数据时,以绕过缓存并增加服务器的负载。

缓存雪崩

  • 如果缓存中的大量数据同时失效,那么大量请求将直接访问原始数据源,导致服务器负载急剧增加。
  • 这可能发生在缓存过期时间设置不当或缓存被恶意清空的情况下。

缓存预热

  • 在缓存初始化或重建时,需要将数据从原始数据源加载到缓存中。
  • 这可能需要一定的时间和资源,并且在这段时间内,系统的性能可能会受到影响。

复杂性增加

  • 引入缓存技术后,系统的设计和维护变得更加复杂。
  • 需要考虑缓存的更新策略、失效策略、数据一致性维护等问题。

资源消耗

  • 缓存需要占用一定的存储空间,并且可能需要额外的计算资源来管理缓存。
  • 在某些情况下,如果缓存配置不当,可能会导致资源浪费或性能下降。

nginx缓存指令

缓存指令是基于ngx_http_proxy_module模块相关指令集来进行完成的,遇到各种未知问题可以到官方文档进行查看

proxy_cache_path指令

该指令用于设置缓存的文件存放路径

| 语法 | proxy_cache_path path levels=numbers keys_zone=zone_name;zone_sizeinactive=timemax_size=size; |
| 默认值 | --- |

位置 http
[proxy_cache_path指令表]

path:缓存路径 如:/usr/local/proxy_cache

levels:指定该缓存空间对应的目录,最多可以设置为三层,每层取值为1|2 如:

levels=1:2 缓存空间有两层目录,第一层是1个字母,第二次是2个字母

举例说明:

monkeykey通过MD5加密以后得值为 21eb8dc2babd4f6db0b3bef1923d7398

(可以使用md加密工具进行解析)

levels=1:2 最终的存储路径为:/usr/local/proxy_cache/8/39

levels=2:1:2 最终的存储路径为:/usr/local/proxy_cache/98/3/d7

levels=2:2:2 最终的存储路径为:/usr/local/proxy_cache/98/73/3d

keys_zone:用来为这个缓存区设置名称和大小,如

keys_zone=monkey:200m 缓存区的名称为monkey,大小为200M

inactive:指定缓存的数据多次时间未被访问就会被删除,如

inactive=1d 缓存数据在1天内没有被访问就会被删除

max_size:设置最大缓存空间,如果缓存空间存满,默认会覆盖缓存时间最长的资源,如

max_size=20g

配置实例:

bash 复制代码
proxy_cache_path /usr/local/proxy_cache levels=2:1 keys_zone=monkey:200m inactive=1d max_size=20g;

proxy_cache指令

该指令用来开启或者关闭代理缓存,如果是开启,则自定义使用哪个缓存区来进行缓存

| 语法 | proxy_cache zone_name;off; |
| 默认值 | proxy_cache off; |

位置 http块,server块,location块
[proxy_cache指令表]

zone_name:指定使用缓存区的名称

proxy_cache_key指令

该指令用设置web缓存的key值,nginx会根据key值MD5进行哈希存储缓存

| 语法 | proxy_cache_key key; |
| 默认值 | proxy_cache_key schemeproxy_host$request_uri; |

位置 http块,server块,location块
[proxy_cache_key指令表]

默认kye值为:请求的协议+代理主机+请求URI来作为key值

proxy_cache_valid指令

该指令用来对不同返回状态码的URL设置不同的缓存时间

| 语法 | |
| | |

[proxy_cache_valid指令表]

proxy_cache_min_uses指令

proxy_cache_methods指令

nginx缓存案例

nginx清除缓存

nginx设置资源不缓存

指令介绍

条件变量介绍

案例实现

相关推荐
三言老师10 小时前
CentOS7.9:Redis‑Cluster集群部署结构化实战教程
linux·运维·服务器·数据库
attitude.x11 小时前
Cursor+GitOps:自动化运维新姿势
运维·自动化
数智化管理手记12 小时前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
Shell运维手记12 小时前
ARP 协议超详细讲解(适合网工考试 / 运维理解)
运维·网络·网络协议·智能路由器
西安景驰电子13 小时前
PCIe 授时卡原理及应用
运维·服务器·windows·单片机·嵌入式硬件·fpga开发
huainingning14 小时前
华三瘦AP切换为胖AP并配置无线功能
运维·网络·网络协议·tcp/ip
外滩运维专家15 小时前
十几台服务器要改配置,别再一台台 SSH 了
运维
冷莫溪15 小时前
Zabbix——认识及部署Zabbix(基于Rocky9.7)
linux·运维·php·zabbix
风曦Kisaki15 小时前
Kubernetes(K8s)笔记Day03: Pod命名空间,标签,Pod 的调度,污点与容忍度,Pod 常见状态和重启策略,Pod 生命周期
linux·运维·笔记·docker·云原生·容器·kubernetes
图件制作GIS,储量计算15 小时前
未来已到,抓住机遇
运维·服务器