基于Proxy Cache的缓存机制

该机制是Nginx服务器自己实现的类似于Squid的缓存机制,它使用md5算法将请求链接hash后生成文件系统目录保存响应数据

Nginx服务器在启动后,会生成专门的进程对磁盘上的缓存文件进行扫描,在内存中建立缓存索引,提高访问效率,并且还会生成专门的管理进程对磁盘上的缓存文件进行过期判定、更新等方面的管理。Proxy Cache缓存机制支持对任意链接响应数据的缓存,不仅限于200状态时的数据。

Proxy Cache缓存机制的一个缺陷是,它没有实现自动清理磁盘上缓存源数据的功能,因此在长时间使用过程中会对服务器存储造成一定的压力。

#其他配置
http {
  ……     # 其他配置
  proxy_cache_path /myweb/server/proxycache levels=1:2 keys_zone=MYPROXYCACHE:10m max_size=2m inactive=5m loader_sleep=1m;       # 配置了缓存数据存放路径和Proxy Cache使用
                                               # 的内存Cache空间
  proxy_temp_path /myweb/server/tmp;           # 配置响应数据的临时存放目录
  server {
    ……   # 其他配置
    location  /  {
      …… # 其他配置
      proxy_pass  http://www.myweb.name/;
      proxy_cache  MYPROXYCACHE;               # 配置使用MYPROXYCACHE这个keys_zone
      proxy_cache_valid 200 302 1h;            # 配置200状态和302状态的响应缓存1小时
      proxy_cache_valid 301 1d;                # 配置301状态的响应缓存1天
      proxy_cache_valid any 1m;                # 配置其他状态的响应数据缓存1分钟
    }
  }
}

在该实例中,我们首先在http块中配置了缓存数据存放路径和Proxy Cache使用的内存Cache空间

  • 缓存数据存放在磁盘上/myweb/server/proxycache目录下,它包含两级hash目录,缓存数据的总量不能超过20MB;

  • 如果缓存在5分钟内没有被访问,则强制更新。

  • 内存Cache空间的名字为MYPROXYCACHE,大小不能超过10 MB,每隔1分钟遍历一次磁盘缓存源数据,更新内存Cache中的缓存索引。

之后,我们在server块中,配置使用上面设置好的MYPROXYCACHE内存空间进行Proxy Cache工作,对不同响应状态的数据缓存时间进行了配置。

Last updated