Re: Bug – 304 status - Cache-Control

Gena Makhomed gmm at csdoc.com
Mon Jan 6 10:04:08 UTC 2014


On 06.01.2014 10:35, S.A.N wrote:

> Есть uri
> /user/bar
> Отдает контент с заголовками
> Cache-Control: private, max-age=0
> Это клиенское кеширования, с постояной ревалидацией на бекенде.
> Даные заголовки запрещают Nginx кешировать страницу, никаких файл кеша в
> Nginx не создаётся её кеширует только браузер, нам это и нужно на данном
> uri.
> По этому в нашем конфиге прописана передача от клиента к бекенду заголовков
> кеширования, чтобы бекенд мог ревалидировать кеш клиента.
> Вот эти строки
> fastcgi_param HTTP_IF_NONE_MATCH $http_if_none_match if_not_empty;
> fastcgi_param HTTP_IF_MODIFIED_SINCE $http_if_modified_since if_not_empty;
> Это работает отлично, но дело в том что эти строчки конфига ломают Nginx
> кеширования, из-за них появляется баг с кешированием 304 статуса.
>
> Отключить Nginx кеширования тоже не можем потому что на других uri мы
> используем Nginx кеширования, например uri
> /news/list
> Отдает контент с заголовками
> Cache-Control: public, max-age=1
> Эта страница должна попадать в кеш Nginx.

там где нужен кеш - его можно включить.
там где кеш не нужен - его можно выключить.
в том числе и в контексте отдельных location`ов.

http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache

syntax: 	fastcgi_cache zone | off;
default: 	fastcgi_cache off;
context: 	http, server, location

Defines a shared memory zone used for caching. The same zone can be used 
in several places. The off parameter disables caching inherited from the 
previous configuration level.

> Нам надо что бы клиент и Nginx кеширования и клиент работали в рамках одного
> server{}, это возможно сделать?

да.

передавать на backend заголовки If-Modified-Since и If-None-Match
или нет - это тоже можно настроить по разному для разных location`ов.

-- 
Best regards,
  Gena



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