Re: Bug – 304 status - Cache-Control

Gena Makhomed gmm at csdoc.com
Tue Jan 7 13:22:24 UTC 2014


On 07.01.2014 12:59, Илья Шипицин wrote:

>> On 04.01.2014 3:07, S.A.N wrote:

>>> Бекенд, не знает и не должен знать, какой тип кеша
>>> ему нужно ревалидировать, клиентский или кеш Nginx,
>>> по хорошему в первом и во втором случаи, механизм
>>> должен быть полностью одинаковым.

>> каким же образом тогда nginx может узнать, какие ответы от
>> backend`а ему следует сохранять в своем кеше, а какие нет?

> каким образом - в треде это явно предлагалось, путем

> 1) кеширования контента, у которого выставлен max-age=0 (или остутствует)

каким образом это поможет бороться с кешированием пустых 304 ответов,
которые приходят с backend`а с "Cache-Control: public, max-age=1" ?

> 2) прокидывания клиентских if-none-match/if-not-modified-since до бекенда

только это как раз будет способ создать проблему, а не решить ее.
backend ответит 304 статусом и пустая страница попадет в кеш nginx.

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

>>> Отключить Nginx кеширования тоже не можем потому что на других uri мы
>>> используем Nginx кеширования, например uri
>>> /news/list
>>> Отдает контент с заголовками
>>> Cache-Control: public, max-age=1
>>> Эта страница должна попадать в кеш Nginx.
>>> Имино с этой страницей и будут проблемы,
>>> если в папке кеша Nginx удалится файл кеша,
>>> и прийдет запрос от браузера с актуальным заголовками
>>> If-Modified-Since и If-None-Match, на этот запрос бекенд ответит 304
>>> статусом и вернет заговок Cache-Control: public, max-age=1,
>>> в результате чего 304 ответ попадет в кеш Nginx.

>> 304 ответ попадет в кеш nginx потому что Вы сами же включили
>> кеш nginx и сами же разрешили nginx кешировать этот ответ,
>> вернув заголовок Cache-Control: public, max-age=1
>> который управляет одновеменно и клиентским кешем и кешем nginx.
>>
>> Добавьте к 304 ответам backend`а еще один заголовок X-Accel-Expires: 0
>> который будет запрещать nginx кешировать такие ответы и будет вам счастье.
>>
>> Ваш backend обязан знать о том, что есть два различных кеша,
>> если Вы хотите управлять ими по-разному. Иначе не получится.

-- 
Best regards,
  Gena



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