nginx缓存解析(动态、静态)

NGINX 的缓存可以是 静态 的,也可以是 动态的,具体取决于配置和缓存的内容类型:

1. 静态缓存

NGINX 可以缓存静态文件,如 HTML、CSS、JavaScript、图片和视频等。对于这些内容,缓存的目标是加快加载速度,减少服务器的负载,因为静态文件通常是固定的,不经常更改。缓存这些内容可以大大提高性能和用户体验。

配置示例:
nginx 复制代码
location /static/ {
    root /var/www/static;
    expires 30d;
}

这个配置会将静态文件缓存 30 天。

2. 动态缓存

NGINX 也可以缓存动态内容,如从后端服务器生成的 HTML 页面、API 响应等。这种缓存适合用于加速动态生成的内容,如数据库查询结果或后端 API 响应。通过缓存动态内容,NGINX 可以在请求量高峰时减少后端服务器的压力。

动态缓存的配置:
nginx 复制代码
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m inactive=60m;
location / {
    proxy_pass http://backend;
    proxy_cache cache_zone;
    proxy_cache_valid 200 10m;
}

这个配置会将后端服务器的动态响应缓存 10 分钟。

在 Nginx 中,proxy_cache用于实现反向代理缓存,可以显著提高性能并减少后端服务器的负载。以下是关于 proxy_cache 的使用方法:

2.1、开启缓存功能
  1. 在 Nginx 的配置文件(通常是nginx.conf)中,找到要配置缓存的服务器块(server)或位置块(location)。
  2. 添加以下配置来开启缓存功能:
nginx 复制代码
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
  • proxy_cache_path指定缓存的存储路径。例如,/path/to/cache是缓存文件存储的目录。
  • levels=1:2设置缓存目录的层级结构。
  • keys_zone=my_cache:10m定义一个名为my_cache的缓存区,大小为 10MB。这个缓存区用于存储缓存的元数据。
  • max_size=10g设置缓存的最大总大小为 10GB。
  • inactive=60m表示如果一个缓存项在 60 分钟内没有被访问,就会被视为过期并可以被删除。
  • use_temp_path=off指示 Nginx 不要使用临时目录来存储缓存文件,这可以提高性能。
2.2、在服务器或位置块中应用缓存
  1. 在服务器块或位置块中,添加以下配置来启用缓存:
nginx 复制代码
location / {
    proxy_pass http://backend_server;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
}
  • proxy_pass指定后端服务器的地址。
  • proxy_cache my_cache使用之前定义的名为my_cache的缓存区。
  • proxy_cache_valid设置不同 HTTP 状态码的缓存有效期。在这个例子中,状态码为 200 和 302 的响应缓存 10 分钟,状态码为 404 的响应缓存 1 分钟。
2.3、缓存控制
  1. 可以通过添加proxy_no_cacheproxy_cache_bypass指令来进一步控制缓存行为:
nginx 复制代码
location / {
    proxy_pass http://backend_server;
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    proxy_no_cache $arg_nocache;
    proxy_cache_bypass $arg_bypass;
}
  • proxy_no_cache可以根据一个变量的值决定是否不缓存响应。例如,如果$arg_nocache变量的值为非空字符串,则不缓存响应。
  • proxy_cache_bypass可以根据一个变量的值决定是否绕过缓存直接从后端服务器获取响应。例如,如果$arg_bypass变量的值为非空字符串,则绕过缓存。

通过以上配置,Nginx 会将对指定位置的请求进行缓存,并根据配置的规则管理缓存的有效期和行为。需要注意的是,缓存的设置需要根据具体的应用场景进行调整,以达到最佳的性能和缓存效果。

3、总结:

  • 静态缓存:缓存不变的静态文件。
  • 动态缓存:缓存后端服务器生成的动态内容。

通过配置不同的缓存策略,NGINX 可以处理两种类型的缓存,从而提高网站的性能和响应速度。

相关推荐
栗子~~1 小时前
JAVA - 二层缓存设计(本地缓冲+redis缓冲+广播所有本地缓冲失效) demo
java·redis·缓存
abigriver1 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
隔窗听雨眠1 小时前
多活部署、CDN加速与边缘缓存全链路优化实战
缓存
charlie1145141912 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
Agent手记2 小时前
异常考勤智能预警与处理与流程优化方案 | 基于企业级Agent的超自动化实战教程
运维·人工智能·ai·自动化
未若君雅裁2 小时前
MyBatis 一级缓存、二级缓存与清理机制
java·缓存·mybatis
cen__y3 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
189228048615 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
dapeng-大鹏5 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
乐维_lwops5 小时前
案例解读|运维监控助力某大型卷烟厂构建高效运维监控体系
运维·运维案例