我正在使用Express与Node.js,并对刷新行为很困惑。在刷新/test
时,由于数组长度不为零(见下面的示例代码),因此在刷新/test
时,似乎某些东西在服务器端缓存时出现app.use
。我期望数组长度重置为零,因为我在刷新浏览器时再次打到/test
。快速app.use刷新行为
app.use默认情况下缓存的东西? Express中间件如何在刷新方面工作?我无法在Express 4.14文档中找到任何明确解释的内容。
==================
浏览器端点:localhost:8000/test
客户:
$.get('/data').done(function(response){...}
路线:
module.exports = function(app) {
app.get('/test', function(req,res) {
var arr =[];
app.use('/data', function(req,res, next) {
console.log(arr.length); // this is nonzero on refresh
arr.push(/* some stuff*/);
res.send({"arr": arr});
}
res.render('test.html')
}
}
服务器:
var express = require('express');
var app = express();
require('./routes/route')(app);
app.set('views',__dirname + '/views');
app.set('view engine', 'ejs');
app.engine('html', require('ejs').renderFile);
var server = app.listen(8000, function() {
console.log("server started 8000");
});
app.use(express.static(__dirname + '/public'));
Express中间件应该只在应用程序的开始处定义一次,而不是针对每个请求。 – robertklep