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 可以处理两种类型的缓存,从而提高网站的性能和响应速度。

相关推荐
java_logo3 分钟前
PGADMIN4 Docker 容器化部署指南
运维·数据库·docker·postgresql·容器·数据库系统
Xyz996_7 分钟前
Keepalived双机热备
linux·运维·服务器
java_logo7 分钟前
Apache Kafka Docker 容器化部署指南
运维·docker·云原生·容器·kafka·kubernetes·apache
小嘟嘟1311 分钟前
第1章 Shell 脚本入门:从 “Hello World“ 到自动化执行的完整路径
linux·运维·自动化·shell
I · T · LUCKYBOOM13 分钟前
23.ssh远程连接、TCP策略
linux·运维·服务器·网络·tcp/ip·ssh
学Linux的语莫14 分钟前
LangGraph知识
运维·langchain
weixin_6600967815 分钟前
tree命令的离线下载
linux·运维·tree
千百元16 分钟前
实时监控磁盘I/O性能
linux·运维·数据库
虹科网络安全18 分钟前
艾体宝干货 | Redis Python 开发系列#6 缓存、分布式锁与队列架构
redis·python·缓存
卿雪19 分钟前
缓存异常:缓存击穿、缓存穿透、缓存雪崩 及其解决方案
java·数据库·redis·python·mysql·缓存·golang