Nginx如何实现动态缓存?

Nginx可以通过proxy_cache模块实现动态缓存。该模块可以缓存网站的响应内容,并在后续请求时直接返回缓存内容,以减少对后端服务器的访问次数。

proxy_cache指令用于开启缓存,并指定缓存文件存储路径:

proxy_cache_path path  [levels=levels]  keys_zone=name:size  
                     [inactive=time] [max_size=size]...;
  • path:缓存文件存储路径
  • levels:目录层级,最多3层
  • name:缓存区域名称
  • size:缓存区域大小

keys模块用于指定缓存的key,一般为请求url:

proxy_cache_key $uri$is_args$args;

缓存相关指令:

  • proxy_cache:指定缓存区域名称,开启缓存
  • proxy_cache_valid:指定缓存时间,超时后重新从源服务器获取
  • proxy_cache_bypass:跳过缓存的条件,如HEAD请求或访问源服务器失败等
  • proxy_cache_purge:用于手动清除缓存,格式为:proxy_cache_purge zone_name url

配置示例:

# 缓存文件路径及缓存区配置  
proxy_cache_path /data/nginx/cache levels=1:2   
                     keys_zone=cache_one:200m inactive=1d max_size=30g;

server {
    location / {
        proxy_cache cache_one;  # 开启缓存,指定缓存区名称
        proxy_cache_key $uri$is_args$args;  # 缓存key

        proxy_pass http://backend;  # 代理请求到后端服务器

       # 缓存1天,请求时间超过1天重新获取              
       proxy_cache_valid   1d;      
    }
}