Re: location vs map по скорость

Maxim Dounin mdounin на mdounin.ru
Чт Июл 26 23:55:53 UTC 2018


Hello!

On Thu, Jul 26, 2018 at 11:42:44PM +0300, Ruslan Ermilov wrote:

> On Thu, Jul 26, 2018 at 04:50:45PM +0300, Maxim Dounin wrote:
> > On Thu, Jul 26, 2018 at 03:43:39PM +0300, kpoxa wrote:
> > 
> > > Добрый день.
> > > 
> > > А что будет по скорости быстрее работать, при ограничении доступа к
> > > определенным расширениям файлов (2-3 десятка расширений):
> > > 
> > > location ~* \.(ext1|ext2|ext3)$ {
> > > deny all;
> > > }
> > > location / {
> > > //access granted
> > > }
> > > 
> > > или
> > > 
> > > map $uri $error {
> > >  ~".ext1$" 403;
> > >  ~".ext2$" 403;
> > >  ~".ext3$" 403;
> > > }
> > > location / {
> > >  if ($error = 403) {
> > >     return 403;
> > >  }
> > > }
> > 
> > Вот конкретно из этих двух примеров - быстрее будет работать 
> > совершенно точно первый, потому что во втором случае будет 
> > выполняться три разных регулярных выражения, а не одно, как в 
> > первом случае.  В общем случае, когда используемые регулярные 
> > выражения одинаковы и в том и в другом варианте, наверное тоже 
> > location чуть выиграет за счёт отсутствия лишних операций с 
> > переменными и инструкций rewrite-модуля.
> > 
> > Впрочем, я сильно сомневаюсь, что разница будет хоть как-то 
> > измерима по сравнению с собственно обработкой запроса даже в этом 
> > случае, не говоря уже про общий.  Так что выбирать стоит скорее 
> > исходя из удобства поддержки всего этого хозяйства.
> 
> Возможно есть смысл добавить переменную?
> 
> # HG changeset patch
> # User Ruslan Ermilov <ru at nginx.com>
> # Date 1532637590 -10800
> #      Thu Jul 26 23:39:50 2018 +0300
> # Node ID 430d80baa550a753a26b1a06d8213ca0e0030176
> # Parent  f7e79596baf209151682f2f7d220161c034657ac
> Added $exten.

IMHO, скорее нет, чем да.

-- 
Maxim Dounin
http://mdounin.ru/


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