我们有一个nginx来缓存API调用的json返回值(例如{" returnVal":10})。由于一些商业考虑,我们必须将刷新间隔设置为1小时。我们遇到这样的情况:有时api调用返回json响应{" returnVal":null}由于一些间歇性错误而nginx缓存了这个" null"并在下次刷新之前为所有API调用提供服务。我可以将nginx配置为在错误/空值时不缓存返回值吗?
答案 0 :(得分:0)
HTTP错误代码(4xx,5xx)是设置和控制缓存的最佳选择,因此您可以执行以下操作:
proxy_cache_valid 200 1m;
proxy_cache_valid 403 1h;
如果设置特定标题出现问题,您可以将缓存键设置为正文(仅当错误响应正文相同但没有错误总是不同时才有效):
proxy_cache_key "$request_uri|$request_body";