Кэширование страницы Node.js - PullRequest
3 голосов
/ 15 марта 2012

Есть ли простой способ кэширования страниц в Express, желательно Memcached?Я использую Jade как систему шаблонов.Я пытаюсь кэшировать определенные страницы для посетителей примерно на 30 секунд.Предпочтительно он использует express.render, но я открыт для предложений.Спасибо!

Ответы [ 2 ]

8 голосов
/ 15 марта 2012

Вам нужно обработать результат рендеринга.

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, если вам нужно.

4 голосов
/ 03 апреля 2013

Я использую простой пакет: 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)
})

См. Также проект на GitHub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...