ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug ? 304 status - Cache-Control


  • To: nginx-ru@xxxxxxxxx
  • Subject: Bug ? 304 status - Cache-Control
  • From: "S.A.N" <nginx-forum@xxxxxxxx>
  • Date: Wed, 01 Jan 2014 22:37:09 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=selenium.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=1+aB0dx6GQ5VuCF+J2NHNNH1bi+QqrIhmVrRbxi7EX4=; b=gMKM2PznIkB89SfMnqMQDIifiRx1WksZ1chLEfLuMtY1mrlVpKapnsg9C8D+b1El/4cqDQphxZgq1jbuxJW4rYrqX8TYmJRpbyxJ1uOMWbHyXkYYgtgKpW7rC+Z93DGIOcLuwAXtrExgodx9ecvr3THbbss8SOPuUo5IjNmCOvs=;

Заметили очень неприятный баг, в результате которого, клиенты получали
пустую страницу.

Конфиг кеширования:

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, 

На последующие запросы по этому uri, если бекенд отвечает статусом 304,
Nginx клиенту отдает результат из своего кеш файла, в котором нет body, если
в браузере есть свой локал кеш, тогда все ок, но если это запрос от клиента
у которого нет в локал кеше браузера данной страницы, он увидит пустую
страницу и в этом заключается баг.

Пока что временно, мы перестали отдавать хедер Cache-Control в статусе 304,
но это не правильно и некоторые браузеры, перестают отправлять хедер
If-Modified-Since.

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,245951,245951#msg-245951

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.