Re: о левых перегибах в proxy_cache_key

Dmitry Koterov dmitry на koterov.ru
Вт Июн 8 16:54:52 MSD 2010


Игорь, спасибо за указание на узкое место в статье. Я подправил текст
http://dklab.ru/chicken/nablas/56.html в единственном месте:

===========================
Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы
применяете nginx+apache+mod_php, просто замените имена директив с
fastcgi_cache* на proxy_cache*, а также внесите изменения в следующие
директивы (чтобы уменьшить объем кэша):

proxy_cache_key "$request_method|$host|$request_uri";
proxy_set_header  If-Modified-Since  "";
proxy_set_header  If-None-Match      "";

Приведенный вариант работает во всех версиях nginx, начиная с 0.7.x (хотя в
0.8.31 и старше его можно упростить).
===========================

Правильно ли я понял, что такой вариант является рабочим во всех версиях
nginx (не только в 0.8.x, но и в популярной до сих пор 0.8.x), а также не
обладает побочными эффектами?..



2010/6/8 Igor Sysoev <igor at sysoev.ru>

> On Tue, Jun 08, 2010 at 03:12:54PM +0400, SaveFrom.net wrote:
>
> > Здравствуйте, Игорь.
> >
> >
> > 8 июня 2010 г. 13:27 пользователь Igor Sysoev <igor at sysoev.ru> написал:
> >
> > > Товарищи!
> > >
> > > На днях в рассылке я увидел чудовищную конструкцию:
> > >
> > > proxy_cache_key
> > >
> "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
> > >
> > > По всей видимости, её источник -
> http://dklab.ru/chicken/nablas/56.html
> > > где она оправдано применяется в FastCGI. Но там же есть примечание:
> > > "Если вы применяете nginx+apache+mod_php, просто замените имена
> > > директив с fastcgi_cache* на proxy_cache*."
> > >
> > > Добавлять $http_if_modified_since и $http_if_none_match в
> proxy_cache_key
> > > никогда, повторю, НИКОГДА, не было нужно. Их всегда можно было обнулить
> > > с помощью:
> > >
> > >      proxy_set_header  If-Modified-Since  "";
> > >      proxy_set_header  If-None-Match      "";
> > >
> > > Любители комбинаторики легко посчитают во сколько раз увеличивается
> > > размер кэша прииспользовани такого ключа.
> > >
> > > Начиная с 0.8.1,
> > >      proxy_set_header  If-Modified-Since  "";
> > > писать не нужно. А начиная с 0.8.31, и
> > >      proxy_set_header  If-None-Match      "";
> > >
> > > Начиная с 0.8.40, можно написать
> > >
> > >      fastcgi_param  HTTP_IF_MODIFIED_SINCE  "";
> > >      fastcgi_param  HTTP_IF_NONE_MATCH      "";
> > >
> > > но делать этого не нужно, так fastcgi_cache сам удаляет эти и некоторые
> > > другие заголовки.
> > >
> > > Т.е. получается что часть
> > "$request_method|$http_if_modified_since|$http_if_none_match|" можно
> удалять
> > при использывании fastcge_cache ? Проблем с отдачей верного контента при
> > различных(get/head) методах запросов не будет?
>
> Да, можно удалять. POSTы не кэшируется вообще, если не сказать
>      fastcgi_cache_methods  POST;
> HEAD кэширует ответ с телом, отдаёт - без.
>
> $request_uri я бы не рекомендовал использовать, лучше уже нормализованный
> вариант "$uri?$args".
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100608/6085ca5b/attachment-0001.html>


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