ExpressJs + Sequelize - 不经常更新的对象缓存

时间:2016-05-29 20:51:37

标签: caching express sequelize.js

我正在处理一个项目,我需要从数据库中缓存不经常更新的对象。

就同步性而言,这是怎么回事?如果视图片段是在承诺内呈现的话,我是否会因为承诺而遇到竞争状态?这是否是可接受的做法,这是否真的有意义(假设许多对象在服务器上缓存如此)?

// array to cache objects
var gPopularTags = [];

// in the module init function
module.exports = function(app, models){
    gModels = models;
    updateTopTags();
    setInterval(updateTopTags, 1000 * 3700);

    // some route that makes use of the cached object
    app.get('/', function(req, res){
        res.render('index', {
            tags: gPopularTags
        }
    });
​
};
// outside of the module init, a private function
function updateTopTags() {
    gModels.Tag.findAll({
        where: {
            useCount: {
                $gt: 0
            }
        },
        order: [['useCount', 'DESC']],
        limit: 5
    }).then(function(tags){
        gPopularTags = tags;
    })
}

然后,与index一起使用的视图具有以下依赖于标记的代码。这些观点都是用翡翠写成的。

if tags
    h1 Popular Tags
    div.list-group
        each tag in tags
            a(href="/tag/#{tag.name}").list-group-item= tag.name
                span.badge= tag.useCount
        a(href="/tag").list-group-item More Tags

0 个答案:

没有答案