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

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

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

0
задан 21 January 2018 в 00:41
1 ответ

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

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

.
0
ответ дан 5 December 2019 в 06:47

Теги

Похожие вопросы