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