我的上游服务器已关闭,nginx 配置为提供过时的内容...因此缓存过期后...在第一个请求中,我们看到 $upstream_cache_status 的响应标头为 STALE。然而,下一个请求...我们看到的是 HIT 的响应。
我认为由于上游服务器已关闭,所有请求都将过期。我是否正确,或者我是否遗漏了什么...
这是我的配置
add_header 'Cache-Control' "no-cache";
proxy_ignore_headers Cache-Control;
proxy_hide_header Cache-Control;
proxy_cache aaa_cache;
proxy_cache_lock on;
proxy_cache_lock_timeout 60s;
proxy_cache_lock_age 15s;
proxy_cache_revalidate on;
add_header X-Cache-Status $upstream_cache_status;
proxy_cache_valid 200 3m;
proxy_cache_valid any 30s;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
谢谢,
答案1
缓存过期时间是针对每个缓存元素单独计算的。让我们看一个事件序列示例:
00:00:00 GET / - MISS -> cached, TTL 3m, expires at 00:03:00
00:00:30 GET /example - MISS -> cached, TTL 3m, expires at 00:03:30
00:02:00 upstream taken down
00:02:10 GET / - HIT -> cached entry still valid
00:03:10 GET / - STALE -> cached entry stale
00:03:20 GET /example - HIT -> cached entry still valid
00:03:40 GET /example - STALE -> cached entry stale
因此,缓存条目状态为 HIT,直到该条目的 TTL 过期。