Optimization nginx:首先尝试提供缩小的文件

Optimization nginx:首先尝试提供缩小的文件,optimization,url-rewriting,nginx,webserver,Optimization,Url Rewriting,Nginx,Webserver,我试图通过缩小css、js、svg等等来优化我的网站 不过,这会影响我的代码库,我希望保留原始文件。我已经将git设置为自动缩小任何css | js | svg到min.css | min.js | min.svg,但我不会编辑链接到这些文件的每个php或html文件以使用.min.扩展名 为了解决这个问题,我想我可以设置nginx,在使用try\u files指令完成对非精简文件的请求时,自动为文件的精简版本提供服务,如果不存在,则使用非精简文件作为备份 这是一些伪配置来详细说明我的意思: l

我试图通过缩小css、js、svg等等来优化我的网站

不过,这会影响我的代码库,我希望保留原始文件。我已经将git设置为自动缩小任何
css | js | svg
min.css | min.js | min.svg
,但我不会编辑链接到这些文件的每个php或html文件以使用
.min.
扩展名

为了解决这个问题,我想我可以设置nginx,在使用
try\u files
指令完成对非精简文件的请求时,自动为文件的精简版本提供服务,如果不存在,则使用非精简文件作为备份

这是一些伪配置来详细说明我的意思:

location \.(css|js|svg) {
      try_files $minified_uri $uri;  
}
但是我不知道如何在这里获取
$minified_uri
(例如,当请求
/some/style.min.css
时,会提供
/some/style.css


此外,如果你认为这种方法真的很糟糕,请随时告诉我为什么,并向我展示一些替代方案

我不能保证它会起作用,但我想你可以试试

location ~ (?<name>[^/]*)\.(?<extention>css|js|svg) {
    try_files $name.min.$extention $name.$extention;  
}
location~(?[^/]*)\(?css|js|svg){
try_files$name.min.$extention$name.$extention;
}

使用regex变量很容易做到这一点:

location ~ ^(.+)\.(css|js|svg)$ {
    try_files $1.min.$2 $uri =404;
}

老实说,我认为只替换代码中的行更快。您可能需要花10分钟来弄清楚如何进行批量替换。