mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 09:42:39 +08:00
Cache: add support for Cache-Control's s-maxage response directive.
Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
This commit is contained in:
parent
1b79cb211d
commit
3ecac9eaba
@ -3934,7 +3934,7 @@ ngx_http_upstream_process_cache_control(ngx_http_request_t *r,
|
|||||||
|
|
||||||
#if (NGX_HTTP_CACHE)
|
#if (NGX_HTTP_CACHE)
|
||||||
{
|
{
|
||||||
u_char *p, *last;
|
u_char *p, *start, *last;
|
||||||
ngx_int_t n;
|
ngx_int_t n;
|
||||||
|
|
||||||
if (u->conf->ignore_headers & NGX_HTTP_UPSTREAM_IGN_CACHE_CONTROL) {
|
if (u->conf->ignore_headers & NGX_HTTP_UPSTREAM_IGN_CACHE_CONTROL) {
|
||||||
@ -3949,18 +3949,24 @@ ngx_http_upstream_process_cache_control(ngx_http_request_t *r,
|
|||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = h->value.data;
|
start = h->value.data;
|
||||||
last = p + h->value.len;
|
last = start + h->value.len;
|
||||||
|
|
||||||
if (ngx_strlcasestrn(p, last, (u_char *) "no-cache", 8 - 1) != NULL
|
if (ngx_strlcasestrn(start, last, (u_char *) "no-cache", 8 - 1) != NULL
|
||||||
|| ngx_strlcasestrn(p, last, (u_char *) "no-store", 8 - 1) != NULL
|
|| ngx_strlcasestrn(start, last, (u_char *) "no-store", 8 - 1) != NULL
|
||||||
|| ngx_strlcasestrn(p, last, (u_char *) "private", 7 - 1) != NULL)
|
|| ngx_strlcasestrn(start, last, (u_char *) "private", 7 - 1) != NULL)
|
||||||
{
|
{
|
||||||
u->cacheable = 0;
|
u->cacheable = 0;
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = ngx_strlcasestrn(p, last, (u_char *) "max-age=", 8 - 1);
|
p = ngx_strlcasestrn(start, last, (u_char *) "s-maxage=", 9 - 1);
|
||||||
|
offset = 9;
|
||||||
|
|
||||||
|
if (p == NULL) {
|
||||||
|
p = ngx_strlcasestrn(start, last, (u_char *) "max-age=", 8 - 1);
|
||||||
|
offset = 8;
|
||||||
|
}
|
||||||
|
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
@ -3968,7 +3974,7 @@ ngx_http_upstream_process_cache_control(ngx_http_request_t *r,
|
|||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
|
|
||||||
for (p += 8; p < last; p++) {
|
for (p += offset; p < last; p++) {
|
||||||
if (*p == ',' || *p == ';' || *p == ' ') {
|
if (*p == ',' || *p == ';' || *p == ' ') {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user