我的应用程序有常用的中间件堆栈:
app.configure(function() {
app.use(express.static(PUBLIC_DIR));
app.use(express.favicon());
app.use(express.bodyParser({
keepExtensions: true,
uploadDir: '/tmp/neighr'
}));
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
secret: '***REDACTED***',
store: sessionStore,
}));
app.use(express.csrf());
app.use((require('connect-flash'))());
app.use(passport.initialize());
app.use(passport.session());
app.use(function(req, res, next) {
app.locals({
_csrf: req.session._csrf,
url: req.url,
user: req.user,
authenticated: req.isAuthenticated(),
messages: {
info: req.flash('info'),
error: req.flash('error'),
success: req.flash('success')
}
});
next();
});
app.use(app.router);
app.use(express.logger());
app.use(express.errorHandler());
});
如您所见,它express.static
是堆栈中的第一个,因此将提供静态资源而无需遍历整个会话内容,这只会使加载时间更长。
但是,我确实有一些我想在没有所有会话内容的情况下提供的动态数据:
app.get('/avatar/:id', function(req, res) {
var fid = res.params.id;
/* load binary from database */
res.send(data);
});
这条路线在app.router
堆栈的末尾。我想保留声明此路由和其他路由的方式,但是如何在会话中间件之前快速解析这些路由?
未来可能会有更多这样的动态路由,参数更多。