Re: о левых перегибах в proxy_cache_key
Igor Sysoev
igor на sysoev.ru
Вт Июн 8 17:30:52 MSD 2010
On Tue, Jun 08, 2010 at 04:54:52PM +0400, Dmitry Koterov wrote:
> Игорь, спасибо за указание на узкое место в статье. Я подправил текст
> 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), а также не
> обладает побочными эффектами?..
Да, это работает и в 0.7.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
> >
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru