更改ExpressJS中的“过期”标题?

时间:2015-07-23 06:25:29

标签: javascript node.js express

我尝试了以下操作,但过期时间设置为1分钟:

app.get(['/css/*','/js/*'],express.static('public',{maxAge:7*86400000}));
app.get(['/fonts/*'],express.static('public',{maxAge:30*86400000}));

如何使用ExpressJS设置到期时间?在上面的代码中,我尝试将到期时间分别设置为1周和1个月。

2 个答案:

答案 0 :(得分:4)

您使用Express static,它完全没问题,它是提供静态文件的相当强大的工具。

express.static是Express中唯一的内置中间件。它基于serve-static,负责提供Express应用程序的静态资产。

除了maxage支持,它还支持ETags

只需这样使用:

app.use(express.static(__dirname + '/public', { maxAge: '1d' }));

这是very good explanation

答案 1 :(得分:2)

使用https://github.com/expressjs/serve-static
例如:

var express = require('express')
var serveStatic = require('serve-static')

var app = express()

app.get(['/css/*','/js/*'],express.static('public',{maxAge:7*86400000}));
app.get(['/fonts/*'],express.static('public',{maxAge:30*86400000}));

function setCustomCacheControl(res, path) {
  if (serveStatic.mime.lookup(path) === 'text/html') {
    // Custom Cache-Control for HTML files
    res.setHeader('Cache-Control', 'public, max-age=0')
  }
}
app.use(serveStatic(__dirname + '/public/css/', {
  maxAge: '7d',
  setHeaders: setCustomCacheControl
}))

app.use(serveStatic(__dirname + '/public/js/', {
  maxAge: '7d',
  setHeaders: setCustomCacheControl
}))

app.use(serveStatic(__dirname + '/public/fonts/', {
  maxAge: '30d',
  setHeaders: setCustomCacheControl
}))

app.listen(3000)