Re: о левых перегибах в proxy_cache_key
Igor Sysoev
igor на sysoev.ru
Вт Июн 8 15:54:18 MSD 2010
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