基本思路
利用请求的局部性原理,将请求过的内容在本地建立一个副本,下次访问时不再连接到后端服务器,直接响应本地内容。
我们运用nginx缓存一般会有以下几个问题:
- 缓存文件存放的路径
- 缓存空间大小的设置
- 设置缓存的有效期
- 如何指定哪些请求被缓存
- 对于某些请求,是否可以不走缓存
配置文件
示例文件:
|
|
参数说明:
proxy_cache_path
语法:proxy_cache_path path [levels=number] keys_zone=zone_name: zone_size [inactive=time] [max_size=size];
- proxy_cache_path指定缓存的目录
- level指定缓存的目录结构,如上配置文件所示,生成的缓存文件如下图所示
缓存文件名为6f7e21bb2c6246ba259832c682bdfdd0,配置文件中的level是1:2,那么他在缓存目录下生成/0/dd
子目录,如果level是1:3,那么会生成/0/fdd
子目录
- keys_zone=zone_name: zone_size指定缓存空间的名称和缓存空间的大小,如上配置文件所示表示缓存空间的名称是one,缓存空间的大小是10m。
- inactive=time表示在inactive参数指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。
- max_size指定缓存空间的大小,当目前缓存的值超出max_size指定的值之后,超过其大小后最少使用数据将被删除。
proxy_cache
语法: proxy_cache zone_name
启用缓存空间,可以在http, server, location这些字段中使用,如上配置文件所示,在location字段中启用了缓存名为one的缓存空间。
proxy_cache_valid
语法:proxy_cache_valid reply_code [reply_code …] time
为不同应答设置不同的缓存时间,如上图所示,为应答代码为200的设置了10分钟的缓存时间。
以上配置文件中有涉及到nginx集群配置信息,参考nginx集群
关于如何指定哪些请求被缓存,对于某些请求,是否可以不走缓存这两个问题参考nginx缓存机制