2013-06-22 38 views
1

我試圖通過縮小CSS,JS,SVG和Whatnot來優化我的網站。nginx:嘗試首先服務縮小的文件

然而,這與我的代碼庫插手,我想保持原來的文件。我設置了git來自動縮小任何css|js|svgmin.css|min.js|min.svg的大小,但我不編輯每個鏈接到這些文件以使用.min.擴展名的php或html文件。

爲了修補這個問題,我想我可以在使用try_files指令完成對非縮小文件的請求並自動將非縮小文件用作備份時自動設置nginx爲文件的縮小版本提供服務如果它們不存在。

這是一些僞配置來闡述我的意思:

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

,但我對如何獲得$minified_uri這裏(例如/some/style.min.css是當請求/some/style.css先得)毫無頭緒。

此外,如果您認爲這種方法非常糟糕,請隨時告訴我爲什麼,並告訴我一些替代方案!

+0

老實說,我認爲只需更換代碼中的行更快。你大概可以花10分鐘搞清楚如何進行批次更換。 – user423455

回答

1

這是很容易使用正則表達式的變量來完成:

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

我不保證它的工作,但我想你可以試試看

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