ajp_cache_use_stale
指令 `ajp_cache_use_stale` 控制在通过 AJP 代理请求时,在特定条件下是否应使用过期的缓存响应。
Support AJP protocol proxy with NGINX
·
httpserverlocation
语法ajp_cache_use_stale error timeout;
默认值none
上下文http, server, location
参数1+
说明
ajp_cache_use_stale 指令在 NGINX 配置中使用时,用于确定在等待 AJP 上游服务器返回新响应时,可在何种情况下向客户端提供过期(陈旧)的缓存响应。该指令可以通过减少延迟并在后端服务短暂故障或性能下降时提高弹性,从而显著改善用户体验。它接受一个或多个参数,用于指定可以提供过期内容的条件。典型条件包括上游服务器返回错误响应、上游请求发生 timeout,或其他指定的错误情况。
例如,如果配置中包含 timeout 参数,则每当上游请求超过配置的 timeout 时,NGINX 可以选择返回先前的缓存响应,而不是向客户端返回错误。该行为使代理在应对不同情况时具有更大的灵活性,从而将用户体验中断降到最低。通过指定多个条件,可以对该指令进行精细调整,以便根据运行要求对缓存行为实现更为细致的控制。
该指令可在包括 http、server 和 location 在内的多种上下文中使用,从而在应用架构的不同层面提供配置灵活性。通过有策略地启用过期响应,开发者可以优化性能,尤其是在流量高峰且服务连续性至关重要的场景中。
配置示例
http {
ajp_cache_path /var/cache/ajp levels=1:2 keys_zone=my_cache:10m;
server {
listen 80;
location / {
ajp_pass my_backend;
ajp_cache my_cache;
ajp_cache_use_stale error timeout;
}
}
}⚠
使用过期响应时要谨慎,因为提供过时的数据可能会使用户产生混淆,除非对缓存进行了严格管理。
⚠
确保已制定并启用缓存失效策略,以防止在重要更新后或超出必要时长仍然提供过时的数据。