为什么Nginx FastCGI缓存STALE响应比HIT响应慢?

为什么Nginx FastCGI缓存STALE响应比HIT响应慢?

我遇到了一个奇怪的问题,即 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 之类的各种限制,客户端就无法对服务器施加不受控制的负载
  • 整体运行通常会更好,并且在最坏的情况下也不会比没有后台更新更差。

https://trac.nginx.org/nginx/ticket/1329

相关内容