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