NGiNX 位置文件夹与位置正则表达式的缓存性能

NGiNX 位置文件夹与位置正则表达式的缓存性能

我看到很多用于缓存文件的正则表达式示例,例如:

location ~* ^.+\.(?:css|js|jpeg|jpg|gif|ico|png|html|ttf|eot|woff|woff2|svg)$ {
    add_header Cache-Control public,max-age=2592000,immutable;
    access_log off;
    tcp_nodelay off;
    open_file_cache max=3000 inactive=120s;
    open_file_cache_valid 45s;
    open_file_cache_min_uses 2;
    open_file_cache_errors off;
}

然而,从了解 NGiNX 的工作原理来看,它似乎可以处理多很多倍的请求?

location /stufftocache/ {
    add_header Cache-Control public,max-age=2592000,immutable;
    access_log off;
    tcp_nodelay off;
    open_file_cache max=3000 inactive=120s;
    open_file_cache_valid 45s;
    open_file_cache_min_uses 2;
    open_file_cache_errors off;
}

然后将所有内容放入该文件夹中,这是真的吗?还是我不明白?我找不到任何提出这个问题的问题,也找不到任何说明这一点的例子,但正则表达式似乎要慢得多。

答案1

是的,正则表达式比较慢,特别是如果它们不是以最优方式构建的,这很容易......

例如,您的正则表达式可以写成:

location ~* \.(?:css|js|jpeg|jpg|gif|ico|png|html|ttf|eot|woff|woff2|svg)$

通过跳过行匹配的开始,它可以使速度更快一些。

关于实际问题,是的,前缀匹配更快。

但是,通常不推荐这样做,因为它限制了文件放置的位置,因此在将新文件添加到系统时,配置和保持配置最新变得更加困难。

相关内容