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