Re: Bug – 304 status - Cache-Control

Maxim Dounin mdounin at mdounin.ru
Fri Jan 3 01:08:38 UTC 2014


Hello!

On Wed, Jan 01, 2014 at 10:37:09PM -0500, S.A.N wrote:

> Заметили очень неприятный баг, в результате которого, клиенты получали
> пустую страницу.
> 
> Конфиг кеширования:
> 
> fastcgi_cache_path cache levels=1:2 keys_zone=cache:256m inactive=1d;
> 
> fastcgi_cache cache;
> fastcgi_cache_lock on;
> fastcgi_cache_revalidate on;
> fastcgi_cache_methods GET HEAD;
> fastcgi_cache_valid 200 301 302 0s;
> fastcgi_cache_key "$host$uri$is_args$args";
> fastcgi_cache_use_stale error updating http_503;
> 
> Воспроизводится баг следующим образом, бекенд при ревалидации отвечает
> статусом 304 и в соответсвии с HTTP спецификации, повторно высылает хедеры:
> 
> Last-Modified и Cache-Control: max-age=1.
> В данном статусе бекенд отдает только хедеры без body.
> Nginx реагирует на хедер Cache-Control, в котором значения max-age больше
> нуля и сохраняет данный ответ в свой файл кеша, при условии что файла в кеше
> Nginx ещё или уже нет, в нашем случаи это было по причине устаревания кеша
> по директиве inactive, 

Если файла в кеше нет - то откуда взялся ответ 304?

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru