srcache_fetch
srcache_fetch 指令在 NGINX 中根据指定的 HTTP 方法和缓存键配置对 upstream 请求的缓存行为。
Transparent subrequest-based caching layout for arbitrary NGINX locations
·
httpserverlocationif in location
语法srcache_fetch method1 [method2 ...] cache_key;
默认值none
上下文http, server, location, if in location
参数2-3
说明
srcache_fetch 指令是 NGINX 透明的基于子请求的缓存系统的重要组成部分,使得可以缓存来自上游服务器的响应。当此指令在诸如 http、server 或 location 等不同上下文中使用时,它指定了哪些 HTTP 方法可以触发缓存获取。该指令接受 2 到 3 个参数,用于定义 HTTP 方法(GET、POST 等)和一个缓存键模式,该模式用于根据传入请求检索缓存数据或存储新的响应。
第一个参数指定将触发缓存获取的被接受的 HTTP 方法列表。通常这是一个逗号分隔的列表,包含诸如 GET 和 HEAD 的方法。第二个参数定义要使用的缓存键,可直接指定或通过变量根据请求的 URI 及其他参数生成。可选的第三个参数可用于指定额外的参数或缓存使用条件。当找到匹配的键时,NGINX 会绕过上游处理并直接返回缓存的响应,从而通过减少上游服务器负载显著提高性能。
配置示例
location /api {
srcache_fetch GET /api/cache_key;
}⚠
确保所指定的方法得到后端服务的支持,以避免出现意外行为。
⚠
如果配置不当,缓存可能会导致返回过时的响应,而不是最新的数据。
⚠
在使用诸如 POST 之类的方法与缓存一起时,请考虑其影响,因为这些方法通常涉及改变状态的请求。