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

相关推荐
星恒讯工业路由器13 分钟前
配网自动化多网融合应用解决方案
运维·自动化
智慧物业老杨19 分钟前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化
techdashen1 小时前
Cloudflare 为何抛弃 NGINX,用 Rust 自研了一个代理
运维·nginx·rust
南城猿1 小时前
保姆级 Ubuntu 部署 禅道
linux·运维·ubuntu
珠海西格电力1 小时前
零碳园区产业园管理系统的全场景源网荷储氢协同调度功能是如何实现的
大数据·运维·人工智能·物联网·能源
快乐非自愿2 小时前
Redis--SDS字符串与集合的底层实现原理
数据库·redis·缓存
wj3055853782 小时前
CC-Switch 在 WSL Ubuntu 中安装记录
linux·运维·ubuntu
人生匆匆2 小时前
通过nginx解决跨域问题
运维·nginx
原来是猿2 小时前
【Socket编程预备知识】
linux·运维·服务器·网络
吴爃3 小时前
Spring Boot 项目在 K8S 中的打包、部署与运维发布实践
运维·spring boot·kubernetes