Welcome! Log In Create A New Profile

Advanced

No revalidation when using stale-while-revalidate

Adam Volek
July 23, 2020 02:08PM
Hi,

We're running into some strange behaviour with the
stale-while-revalidate extension of the cache-control header when using
nginx as a reverse proxy. When there is a stale response in the cache
with nonzero stale-while-revalidate time, nginx attempts revalidation
but seems to ignore the upstream answer if it has specific status code,
such as 404 or 500, and server a stale response to the client. Other
response codes such as 200 or 410 don't trigger this behaviour. Is this
intended, and if so, is there a way to configure nginx to treat 404 as
any other response?

I understand that this behaviour might be desirable in some situations
(especially for the responses with 5xx status codes), but in our case,
if the upstream return a 404 response, we would want the cache to start
returning it as well as soon as the revalidation is finished.

Below is a minimum nginx.conf we used to replicate the issue.

Kind regards,
Adam Volek


events {}

http {
proxy_cache_path /tmp/ngx_cache keys_zone=one:10m;
proxy_cache one;

server {
listen 8080 default_server;

location / {
proxy_pass http://example.com/;
}
}
}
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

No revalidation when using stale-while-revalidate

Adam Volek July 23, 2020 02:08PM

Re: No revalidation when using stale-while-revalidate

Maxim Dounin July 23, 2020 10:34PM

Re: No revalidation when using stale-while-revalidate

Adam Volek July 24, 2020 09:22AM

Re: No revalidation when using stale-while-revalidate

Maxim Dounin July 26, 2020 09:42PM

Re: No revalidation when using stale-while-revalidate

Roman Arutyunyan August 14, 2020 06:00AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 71
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready