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

时间:2013-06-22 15:54:56

标签: optimization url-rewriting nginx webserver

我正在尝试通过缩小css,js,svg和诸如此类来优化我的网站。

但这会干扰我的代码库,我想保留原始文件。我已经设置git来自动缩小任何css|js|svgmin.css|min.js|min.svg,但我没有编辑链接到这些文件的每个php或html文件以使用.min.扩展名。

为了解决这个问题,我想我可以设置nginx在使用try_files指令完成对非缩小文件的请求并使用非缩小文件时自动提供文件的缩小版本如果它们不存在则作为备份。

这是一些伪配置来阐述我的意思:

location \.(css|js|svg) {
      try_files $minified_uri $uri;  
}

但我不清楚如何在此处获取$minified_uri(例如,在请求/some/style.min.css时提供/some/style.css

另外,如果您认为这种方法非常糟糕,请随时告诉我原因,并向我展示一些替代方案!

2 个答案:

答案 0 :(得分:2)

使用正则表达式变量很容易实现:

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

答案 1 :(得分:0)

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

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