Re: Bug – 304 status - Cache-Control

S.A.N nginx-forum at nginx.us
Tue Jan 7 22:20:24 UTC 2014


> Кстати, похоже, что есть вариант еще проще, используя директиву
> fastcgi_cache_bypass для запросов с If-Modified-Since и If-None-Match
> и выставляя в ответе заголовок X-Accel-Expires: 0
> если статус ответа backend`а будет 304.

Да, у меня крутился в голове вариант, использовать куки для
fastcgi_no_cache.
Схема следующая, скрипт который отдает приватный кеш, будет отдавать куку с
path=$self_path, данная кука будет приходит только на данный uri, таким
образом её можно использовать для условия в fastcgi_no_cache для выключения
Nginx кеширования, осталось только проверить, удаляет Nginx клиентские
заголовки если выполняется условия fastcgi_no_cache, если не удаляет, тогда
этот вариант выглядит лучше чем прописывать location в конфиге Nginx.

Насчет запрета кеширования 304 статуса, я начал склонятся к мысли что бекенд
не должен клиенту повторно отдавать заголовки Cache-Control.
Если бекенд не будет отдавать эти заголовки, Nginx не будет сохранять данный
ответ в своем кеше, потому что в конфиге прописано fastcgi_cache_valid 200
301 302 0s;
В последних наших тестах выяснилось что все современные браузеры, нормально
реагируют на отсутствия заголовков Cache-Control в ответе с 304 статусом,
хотя спецификации HTTP требует наличия этого заголовка.
Вопрос к сообществу, какие проблемы могут возникнуть, если в 304 статусе не
будет заголовка Cache-Control?

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



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