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
,