2017-03-04 30 views
0

我的配置編譯了一個.gz版本的腳本,但只有當壓縮減小文件大小時,這意味着某些.js腳本將具有.js.gz副本,有些則不會。如何嘗試文件並回退到其他文件?

如果是.js擴展名,我可以告訴nginx嘗試.gz。雖然,如果.js.gz不存在,我怎麼告訴nginx退回到.js

app.get('*.js', (req, res, next) => { 
    // eslint-disable-next-line operator-assignment 
    req.url = req.url + '.gz'; 

    res.set('Content-Encoding', 'gzip'); 

    next(); 
}); 

使事情進一步複雜化,我使用serve-static

我能夠做到這一點使用:

try_files $uri.gz $uri @404 
+0

上'服務-static',HTTPS打開一個問題: //github.com/expressjs/serve-static/issues/85。 – Gajus

回答

1

express-static已經有你需要的一切 - extensions fallbacks

app.use(express.static(path.join(__dirname, 'public'), { 
    extensions: ['gz'] 
})); 
+0

這不符合'try_files $ uri.gz $ uri @ 404'的方式。如果文件不存在,'extensions'配置會創建回退。它不會首先嚐試擴展來查看文件是否存在。 – Gajus

相關問題