Skip to content

60 Nginx缓存配置inactive time与proxy_cache_valid time的关系

Jinxin Chen edited this page Dec 11, 2019 · 1 revision

Nginx缓存配置缓存时有两个与时间相关的参数,inactive和proxy_cache_valid,他们之间的关系如何?

inactive

inactive指定了一个时间长度,在这个时间内缓存未被访问,则将从缓存中删除。该参数声明了缓存数据被保存的时间。

proxy_cache_valid

缓存有效时间。

之间的关系?

inactive声明的是缓存数据的保存时间, proxy_cache_valid 声明的是缓存有效时间。

假设有资源:http://localhost/site.js,做如下测试:

测试一:

inactive 2m, proxy_cache_valid 1m
  1. 第一次访问该资源,cache status返回 MISS。
  2. 过了1分钟但少于2分钟之内再次访问该资源,此时缓存数据还存在(没有超过inactive指定的时间),但是缓存已经失效(超过proxy_cache_valid指定的时间),cache status返回EXPIRED,此时proxy会将请求发送给后台服务器获取新的内容,并更新缓存数据

测试二:

inactive 1m, proxy_cache_valid 2m
  1. 第一次访问该资源,cache status返回 MISS。
  2. 过了1分钟但少于2分钟之内再次访问该资源,此时缓存数据不存在(超过inactive指定的时间),缓存还没有失效(没有超过proxy_cache_valid指定的时间),但是从缓存数据中找不到对应的key,cache status返回MISS,此时proxy会将请求发送给后台服务器获取新的内容,并更新缓存数据

总结

缓存是否命中,取决于 inactive 和 proxy_cache_valid 中设定的最小值。

参考

Clone this wiki locally