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