Avoid cache on zero-bytes-returned?

Jonathan Matthews contact at jpluscplusm.com
Wed Mar 13 15:12:14 UTC 2013


On 13 March 2013 15:02, AJ Weber <aweber at comcast.net> wrote:
>
>
> On 3/13/2013 10:40 AM, Jonathan Matthews wrote:
>>
>>
>> It looks to me like
>> http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_no_cache
>> is what you need to use.
>> If the backend is returning a Content-Length header, you could refer
>> to that. If not, you may have to get creative in assembling a map{}
>> variable.
>
> I looked at that, but it appears that it only tests for the existence of the
> variable/header.  Content-Length should be there all the time.

The docs I linked to have this to say: "If at least one value of the
string parameters is not empty and is not equal to “0” then the
response will not be saved"

So if content-length is always present (and sometimes "0") I would try this:

------------------------------------
map $upstream_http_content_length $map_upstream_cache_buster {
  default 0;
  0         1;
}
server {
  [...]
  proxy_no_cache $map_upstream_cache_buster;
}
------------------------------------

Or something like that; you get the idea.

Jonathan
-- 
Jonathan Matthews // Oxford, London, UK
http://www.jpluscplusm.com/contact.html



More information about the nginx mailing list