Nginx 缓存配置:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off;
server {
# ...
location / {
proxy_cache my_cache;
proxy_cache_valid 5m;
proxy_pass http://my_upstream;
}
}
Run Code Online (Sandbox Code Playgroud)
不活跃
inactive 指定一个项目可以在缓存中保留多久不被访问。在这个例子中,一个在 60 分钟内没有被请求的文件会被缓存管理器进程自动从缓存中删除,不管它是否已经过期。
proxy_cache_valid
为不同的响应代码设置缓存时间。如果仅指定缓存时间,则仅缓存 200、301 和 302 响应。
是否proxy_cache_valid覆盖动静吗?5m 后缓存文件是否存在?
Tit*_*ter 12
从这个博客引用两段话:
\n\n\n结果 proxy_cache_valid 指示 Nginx 如果资源没有首先变为非活动状态,则该资源可以缓存 1y。当您请求过期时间较长但由于缺少请求而变得不活动的资源时,会导致缓存未命中。
\n
\n\n结论\nproxy_cache_path 的非活动时间应高于请求的过期时间 (proxy_cache_valid)。
\n
来自官方 Nginx 指南:
\n\n\ninactive 指定项目可以在缓存中保留多长时间而不被访问。在此示例中,缓存管理器进程会自动将 60 分钟内未请求的文件从缓存中删除,无论该文件是否已过期。默认值为 10 分钟 (10m)。非活动内容与过期内容不同。NGINX 不会自动删除缓存控制标头(例如 Cache-Control:max-age=120)定义的已过期内容。仅当过期(陈旧)内容在 inactive 指定的时间内未被访问时才会被删除。当访问过期内容时,NGINX 从源服务器刷新它并重置非活动计时器。
\n
那么,您的问题的答案:
\n\n\nproxy_cache_valid 是否会覆盖 inactive?5m后缓存文件是否存在?
\n
不,他们两人一组工作。
\nproxy_cache_valid使缓存在 5 分钟后过期。
如果缓存(无论是否过期)在 10 分钟内未被访问 - Nginx 会将其删除。
\n如果在 10 分钟内访问了过期的缓存 - NGINX 会从源服务器刷新它并重置非活动计时器。
\n这个答案也可以帮助理解proxy_cache_valid和inactive更好。
| 归档时间: |
|
| 查看次数: |
1206 次 |
| 最近记录: |