Re: дубли в кэше

Anton Kuznetsov maybe на arjlover.net
Вт Ноя 10 00:46:23 UTC 2015


Спасибо, вырезал Vary - полет нормальный. Вообще странно, что об этом прямо
не упомянуто в доке в абзаце про cache_key. Какое-то отдельное знание
сейчас.

2015-11-09 22:35 GMT+03:00 Maxim Dounin <mdounin at mdounin.ru>:

> Hello!
>
> On Mon, Nov 09, 2015 at 10:03:42PM +0300, Anton Kuznetsov wrote:
>
> > Включил логирование Vary - обнаружил ровно два варианта. Четко повторяют
> > что передал браузер и соответственно четко следует за моей переменной
> > $cache_gzip=0|1-
> > вроде бы должно получаться два моих задуманных варианта.
>
> В заголовке Vary указываются заголовки запроса, от которых зависит
> вторичный ключ кеширования.  Т.е. даже при ровно одном варианте,
> Vary:
>
> Vary: Accept-Encoding
>
> количество возможных варинтов ответов начинает определяеться
> количеством возможных значений Accept-Encoding, которые присылает
> клиент.
>
> > 2015-11-09 21:54 GMT+03:00 Anton Kuznetsov <maybe at arjlover.net>:
> >
> > > Но позвольте, зачем тогда нужен ключ кэширования? Я же четко сказал от
> > > чего он должен зависить? Почему он зависит еще от чего-то?
>
> Явно заданный ключ кеширования работает тогда и только тогда,
> когда мы заранее знаем, от чего зависит ответ бекенда.  В этом
> случае проверку Vary можно выключить, и использовать только явно
> заданный ключ.
>
> Если же результат ответа бекенда заранее не известен, то
> приходится пытаться придумывать что-то, что позволило бы бекенду
> контролировать процесс.
>
> В HTTP/1.1 для этого придуман механизм вариативности ресурсов -
> ресурс может существовать в нескольких вариантах, и с помощью
> заголовка Vary бекенд сообщает о том, от каких именно заголовков
> завист, какой вариант будет выбран.  Механизм, скажем так, не
> очень, и приводит к ужасному дублированию ресурсов при
> кешировании (особенно, если пытаться использовать "Vary:
> User-Agent", как некоторые делают), но уж какой есть.  Задачу свою
> он, так или иначе, выполняет, и позволяет обеспечить корректность
> ответов в общем случае, когда поведение бекенда заранее не
> известно.
>
> Если вам этот механизм не нужен - в nginx'е есть ручка,
> позволяющая поддержку этого механизма выключить, и,
> соответветственно, явно прописать правила руками.
>
> Подробнее тут, как уже говорилось, тут:
>
> http://nginx.org/r/fastcgi_ignore_headers
> http://nginx.org/r/fastcgi_cache_valid
>
> --
> Maxim Dounin
> http://nginx.org/
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>



-- 
Best regards,
Anton Kuznetsov.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20151110/7e3ce780/attachment.html>


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