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

Maxim Dounin mdounin на mdounin.ru
Чт Июл 26 13:50:45 UTC 2018


Hello!

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-модуля.

Впрочем, я сильно сомневаюсь, что разница будет хоть как-то 
измерима по сравнению с собственно обработкой запроса даже в этом 
случае, не говоря уже про общий.  Так что выбирать стоит скорее 
исходя из удобства поддержки всего этого хозяйства.

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


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