Nginx: есть ли реальное или теоретическое преимущество использования "^.+\. Ext$" вместо "\.ext$" в блоке расположения регулярного выражения?

Есть ли какая-либо причина, реальная или теоретическая, что:

location ~* ^.+\.js$ {
    access_log off;
    log_not_found off;
    expires max;
}

было бы предпочтительнее, чем:

location ~* \.js$ {
    access_log off;
    log_not_found off;
    expires max;
}

Я спрашиваю, потому что большую часть времени я вижу примеры Nginx, использующие конфигурацию второго блока. Но иногда я вижу, как первый блок используется вместо второго. На самом деле, многие примеры на nginx.com, похоже, используют конфигурацию первого блока вместо второго.

Насколько я могу судить, единственное реальное отличие состоит в том, что в первом блоке пропускается поиск новых строк (\n) при сопоставлении местоположений, что, возможно, делает его более эффективным.

Читаемость это хорошо, но производительность лучше.

Кто-нибудь может привести аргумент в пользу выбора одной конфигурации над другой, видя, что они кажутся почти идентичными с точки зрения функции?

1 ответ

Решение

Выполнение первого регулярного выражения занимает немного больше времени, но на современных процессорах время будет довольно тривиальным.

Но первое регулярное выражение не будет соответствовать файлу с именем .js, Второе регулярное выражение будет соответствовать файлу с именем .js,

Другие вопросы по тегам