我正在将Nginx用作页面加载缓慢的Node应用程序的缓存和反向代理。我已将Nginx配置为在后台进行更新时提供页面的过时版本,但是遇到了以下问题:尽管页面的过时版本被非常快速地返回,但随后的一些静态资源请求(无论它们是否由Nginx提供)或代理到Node)需要很长时间才能完成。响应时间或多或少对应于在后台更新缓存页面所需的时间,这给我的印象是,在更新缓存时,请求以某种方式挂起。
我的缓存配置如下:
proxy_cache_path /root/cache levels=1:2 keys_zone=my_cache:8m max_size=10g inactive=2d use_temp_path=off;
location /xxx {
add_header X-Cached $upstream_cache_status;
add_header X-Cache-Date $upstream_http_date;
proxy_cache my_cache;
proxy_cache_use_stale updating error timeout;
proxy_cache_background_update on;
proxy_cache_valid any 10m;
proxy_pass http://127.0.0.1:3000/xxx;
}
这就是通常的时间安排。第一个请求(240毫秒)是页面本身,需要11秒响应的请求只是静态文件。