我们在第三方服务前面使用 Ngnix 作为缓存代理,并有以下指令来确保状态代码为 200 的上游响应被缓存...
proxy_cache_valid 200 364d
问题是,当给定的搜索未找到任何结果时,第三方服务会返回 200。响应主体中的 JSON 参数会指示这一点docs: []
。
是否可以proxy_no_cache
在上游主体内容上使用 或任何其他带有正则表达式的指令,以便我们不会缓存这些“空”响应?也不存在指示“空”响应的标头。
短暂性脑缺血发作
答案1
不。nginx 不会将响应有效负载作为变量提供。这是执行此类操作所需的最低要求。
您可以创建另一个应用程序来执行上游请求、解析响应并设置 HTTP 标头,以告知 nginx 是否应缓存响应。或者它可以直接为空响应设置 404 响应。