我遇到了一些有趣的東西與視圖緩存在快遞/翡翠。控制器通過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頁面不被緩存 - 跨瀏覽器 –