Mercurial > hg > nginx-quic
diff src/http/ngx_http_upstream.c @ 3597:0d8b8c84bab7 stable-0.7
merge r3518, r3527:
cache related fixes:
*) do not cache response if it has "no-store" or "private"
in "Cache-Control" header
*) proxy_no_cache and fastcgi_no_cache
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 07 Jun 2010 12:23:23 +0000 |
parents | d963fa32847e |
children | 8152369f7037 |
line wrap: on
line diff
--- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -585,6 +585,13 @@ ngx_http_upstream_cache(ngx_http_request ngx_int_t rc; ngx_http_cache_t *c; + if (u->conf->no_cache) { + rc = ngx_http_cache(r, u->conf->no_cache); + if (rc != NGX_OK) { + return rc; + } + } + if (!(r->method & u->conf->cache_methods)) { return NGX_DECLINED; } @@ -3002,16 +3009,18 @@ ngx_http_upstream_process_cache_control( return NGX_OK; } - last = h->value.data + h->value.len; - - if (ngx_strlcasestrn(h->value.data, last, (u_char *) "no-cache", 8 - 1) - != NULL) + p = h->value.data; + last = p + h->value.len; + + if (ngx_strlcasestrn(p, last, (u_char *) "no-cache", 8 - 1) != NULL + || ngx_strlcasestrn(p, last, (u_char *) "no-store", 8 - 1) != NULL + || ngx_strlcasestrn(p, last, (u_char *) "private", 7 - 1) != NULL) { u->cacheable = 0; return NGX_OK; } - p = ngx_strlcasestrn(h->value.data, last, (u_char *) "max-age=", 8 - 1); + p = ngx_strlcasestrn(p, last, (u_char *) "max-age=", 8 - 1); if (p == NULL) { return NGX_OK;