3
有沒有簡單的方法來緩存Express中的頁面,最好是Memcached?我使用Jade作爲模板系統。我期待爲訪問者緩存某些頁面大約30秒。最好是使用express.render
,但我願意接受建議。謝謝!Node.js頁面緩存
有沒有簡單的方法來緩存Express中的頁面,最好是Memcached?我使用Jade作爲模板系統。我期待爲訪問者緩存某些頁面大約30秒。最好是使用express.render
,但我願意接受建議。謝謝!Node.js頁面緩存
您需要處理渲染結果。
var cache = {};
var getPageFromCache(url, callback) {
if (cache[url]) {
// Get page from cache
callback(undefined, cache[url]);
} else {
// Get nothing
callback();
}
};
var setPageToCache(url, content) {
// Save to cache
cache[url] = content;
};
app.get('/', function(req, res){
getPageFromCache(req.url, function(err, content) {
if (err) return req.next(err);
if (content) {
res.send(content);
} else {
res.render('index.jade', { title: 'My Site' }, function(err, content) {
// Render handler
if (err) return req.next(err);
setPageToCache(req.url, page);
res.send(content);
});
}
});
});
如果需要,實現getPageFromCache和setPageToCache以使用memcached。
我正在使用一個簡單的包:cacher,它是一個處理由memcached支持的頁面緩存的快速中間件。
用法示例:
var Cacher = require("cacher")
var cacher = new Cacher("myhost:11211")
// as a global middleware
app.use(cacher.cacheHourly())
// or per route
app.get("/long-cache", cacher.cacheDaily(), ...)
app.get("/short-cache", cacher.cacheOneMinute(), ...)
app.get("/no-cache", ...)
// listen for events
cacher.on("hit", function(url) {
console.log("woohoo!", url)
})
cacher.on("miss", function(url) {
console.log("doh!", url)
})
cacher.on("error", function(err) {
console.log(err)
})
沒有意識到,有一個res.render回調(!當然有)謝謝! – 2012-03-15 18:43:20