我遇到了一个奇怪的问题,即 nginx 微缓存。当 nginx 提供陈旧内容时,它需要很长时间。我的实际微缓存部分在配置中:
...
fastcgi_cache biznisto.sk;
fastcgi_cache_bypass $skip_cache;
fastcgi_cache_key "$scheme$request_method$host$request_uri$rt_session";
fastcgi_cache_valid 200 301 302 5m;
fastcgi_cache_use_stale updating error timeout invalid_header http_500;
fastcgi_cache_lock on;
fastcgi_cache_revalidate on;
fastcgi_cache_background_update on;
fastcgi_pass_header Set-Cookie;
fastcgi_pass_header Cookie;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
add_header X-Cache $upstream_cache_status;
...
屏幕陈旧 - 等待 565 毫秒 HIT - 等待 59 毫秒
有什么建议吗?谢谢
答案1
这fastcgi_cache_background_update指令允许在将陈旧的缓存响应返回给客户端时更新过期的缓存项。
但是,如果响应已完全返回,但更新尚未完成,则会延迟后续操作,包括处理同一连接上的其他请求和/或关闭连接。
此行为确保:
- 假设存在诸如 limit_conn 之类的各种限制,客户端就无法对服务器施加不受控制的负载
- 整体运行通常会更好,并且在最坏的情况下也不会比没有后台更新更差。