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·运维·服务器·网络·python·安全·web安全
学习HCIA的小白2 分钟前
RHCE笔记-DNS服务器
运维·服务器·笔记
J老熊33 分钟前
Nginx 的讲解和案例示范
linux·运维·后端·nginx·面试
lqj_本人34 分钟前
Flutter&鸿蒙next 封装 Dio 网络请求详解:登录身份验证与免登录缓存
flutter·缓存·华为·harmonyos
吴巴格41 分钟前
linux ssh 进行 免密登录,通过密钥登录
linux·运维·ssh
小安运维日记42 分钟前
Linux云计算 |【第五阶段】CLOUD-DAY2
linux·运维·云计算·openstack
饺子大魔王的男人1 小时前
本地服务器上搭建PPTist轻松实现跨地域的在线PPT制作与演示
运维·服务器·powerpoint
南宫码农2 小时前
CentOS 7镜像下载
linux·运维·centos
白-胖-子3 小时前
【原创分享】详述中间件的前世今生
运维·中间件·java-ee·jdk
库克库伯电气3 小时前
变压器没有做电容补偿还能带同样的负荷吗
运维·服务器·单片机·嵌入式硬件·物联网