在Express的静态文件中,我能否忽略一些静态文件?

7
const express = require('express');

const app = express();

app.use('/app', express.static(path.resolve(__dirname, './app'), {
    maxage: '600s'
}))

app.listen(9292, function(err){
    if (err) console.log(err);
    console.log('listening at http:localhost:9292/app');
})

我的代码中使用了express static来提供静态文件服务。我想为某些文件添加maxage头,而不是所有文件。

我能否为某些文件添加maxage头?

- app
    - js
      - app.js
    - css
       - app.css
    - index.html 

这是我的应用程序的静态路径。我想给所有文件添加标头,而不是。
1个回答

10

方法一

app.use(function (req, res, next) {
  console.log(req.url);
  if (req.url !== '/app/index.html') {
    res.header('Cache-Control', 'public, max-age=600s')
  }
  next();
});
app.use('/app', express.static(path.resolve(__dirname, './app')));

方法2

你可以将js/css/images等文件放在不同的子文件夹中。例如,你可能把所有的文件都放在public/文件夹下,只有html文件在public/templates/文件夹下。这种情况下,你可以按照路径进行拆分:

var serveStatic = require('serve-static')

app.use('/templates', serveStatic(__dirname + '/public/templates'), { maxAge: 0 })
app.use(serveStatic(__dirname + '/public'), { maxAge: '1y' })

方法三

如果您的文件都混杂在一起,并且您想要将0最大年龄应用于所有文本/HTML文件。在这种情况下,您需要添加一个标题设置过滤器:

var mime = require('mime-types')
var serveStatic = require('serve-static')

app.use(serveStatic(__dirname + '/public', {
  maxAge: '1y',
  setHeaders: function (res, path) {
    if (mime.lookup(path) === 'text/html') {
      res.setHeader('Cache-Control', 'public, max-age=0')
    }
  }
}))

方法2和3是从GitHub复制的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接