使用Parse Javascript SDK缓存查询

使用Parse Javascript SDK缓存查询,javascript,caching,parse-platform,Javascript,Caching,Parse Platform,是否可以使用Parse的(Parse.com)Javascript SDK缓存查询 我找到的唯一参考是,它说它目前不受支持 由于对上一个链接的最后一次响应是在4个月前,我想知道它现在是否受支持,或者是否存在缓存此查询的解决方法。只需稍加努力,您就可以使用包装器方法自己缓存它(或任何内容) 例如,我修改为缓存: var cacheKeys = [], cacheVals = []; function q(cls, ok, fail) { // query wrapper that imp

是否可以使用Parse的(Parse.com)Javascript SDK缓存查询

我找到的唯一参考是,它说它目前不受支持


由于对上一个链接的最后一次响应是在4个月前,我想知道它现在是否受支持,或者是否存在缓存此查询的解决方法。

只需稍加努力,您就可以使用包装器方法自己缓存它(或任何内容)

例如,我修改为缓存:

var cacheKeys = [],
    cacheVals = [];

function q(cls, ok, fail) { // query wrapper that implements caching

    // store or fetch from cache if available:
    var slot = cacheKeys.indexOf(cls);
    if (slot !== -1) {
        return ok(cacheVals[slot]);
    } else {
        slot=cacheKeys.length;
        cacheKeys.push(cls);
    }
    //normal query code:
    var query = new Parse.Query(cls);

    query.find({
        success: function(results) {
            cacheVals[slot] = results; //cache results 
            ok(results); // call traditionally 
        },

        error: fail || console.error.bind(console)
    });

} // end  q()

请注意,这可能会随着时间的推移累积不需要的缓存项,因此您可能希望使用WeakMap进行重构(如果您可以使用浏览器支持池),自己维护缓存,或者只是让它偶尔构建和重新加载。另一个考虑因素是,它希望每次都将完全相同的查询对象传递给q()。您可以尝试使用JSON.stringify(cls)作为密钥,但结果不能保证。尽管如此,由于它只是一个缓存功能,由于JSON密钥重新排序而导致的缓存丢失不会破坏任何东西…

问题是我无法使用服务器信息进行缓存(即元素/集合是否发生了更改?),请您详细说明如何在限制、接近、跳过等约束条件下使用此方法?@IvanWang:如果我理解这个愿望,我认为你不需要修改任何东西来支持约束,你只需要在成功处理程序中记忆,在包装程序中调用。你可以使用对象而不是数组来简化缓存。创建:cacheVals={};set/get:cacheVals[cls]@yechezkeldren:key是对象,所以它们都会像那样在
[objectobjectobject]
下进行设置;无益