Назад | Перейти на главную страницу

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) при сопоставлении местоположений, возможно делая его более эффективным.

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

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

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

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