вторник, 7 января 2014 г. пользователь Gena Makhomed писал:
> 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" ? кеширование 304 может быть только с пустым телом. такова природа этого ответа. > > 2) прокидывания клиентских if-none-match/if-not-modified-since до бекенда >> > > только это как раз будет способ создать проблему, а не решить ее. > backend ответит 304 статусом и пустая страница попадет в кеш nginx. если бекенд ответит 304, то nginx тоже ответит 304. да, в этом случае тело ответа не нужно. если бекенд понял, что контент поменялся, то ответ будет 200 и будет тело. соответственно, когда тело нужно, оно есть. и наоборот. в чем проблема ? я вижу проблему в сильном усложнении логики. без бутылки будет не разобраться. прежде чем выпускать таких демонов, надо сто раз подумать. > > 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 mailing list > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
