我遇到了一些有趣的东西与视图缓存在快递/翡翠。控制器通过Mongoose从MongoDB中获取文章并将其传递给res.render函数。但是,在运行几分钟后,Express开始为该路线的所有请求提供相同的编译模板。这甚至发生在共享.jade包括在各种模板中使用。表达视图缓存行事滑稽
数据库正在提取正确的文章,如果我将一些随机字符串传递给模板,则无关紧要,我总是得到相同的输出。
这是控制器功能:
exports.show = function(req, res) {
var articleId;
articleId = req.params.id;
Article.findOne({
_id: articleId
}).populate('author').exec(function(err, article) {
if (err) {
console.log(err);
} else {
res.render('articles/show', {
article: article,
articleId: article.id
});
}
});
};
这就是今天的路线:
app.get('/articles/:id', articles.show);
同样的事情发生我是否在生产或开发模式下运行。
有没有人遇到过这种与Express/Jade混淆?
使用“相同的编译模板”,你的意思是相同的*渲染*模板?我不确定它是否是视图缓存,因为在开发模式下运行时它不是主动的(除非你明确地启用了它)?此外,视图缓存仅存储已编译(但未呈现)的模板,它们仍将针对每个请求单独呈现。你的应用安装程序是什么样的?任何其他中间件(或者可能是Node前的代理服务器)都可能导致此问题? – robertklep
我同意@robertklep。我猜它是你的缓存代理。如果你看到任何缓存头,你能检查响应头吗?另外,请尝试在服务器端设置以下标题。 缓存控制:无缓存,无店铺,必重新验证 杂注:无缓存过期 :0 看看是否能为你的作品HTTP://stackoverflow.com/questions/49547/making-确保Web页面不被缓存 - 跨浏览器 –