Nginx:在正则表达式位置块中使用“^.+\.ext$”而不是“\.ext$”是否有实际或理论上的优势?

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

第一个正则表达式的执行时间稍微长一些,但在现代 CPU 上,这个时间相当短。

但是,第一个正则表达式将不是匹配名为 的文件.js。第二个正则表达式将匹配名为 的文件.js

相关内容