是否可以使用Parse(parse.com)Javascript SDK缓存查询?
我发现的唯一参考是https://parse.com/questions/javascript-sdk-caching,它表示目前不支持。
由于上次链接的最后一次响应是从4个月前开始,我想知道现在是否支持它,或者是否有解决方法来缓存此查询。
答案 0 :(得分:5)
有一点小腿,你可以使用包装器方法自己缓存它(或任何东西)。
例如,我将https://parse.com/docs/js/symbols/Parse.Query.html修改为缓存:
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进行重构(如果您可以使用浏览器支持池),自己维护缓存,或者只是让它构建并重新加载每个缓存条目时不时。另一个考虑因素是它希望每次都将EXACT相同的查询对象传递给q()。您可以尝试使用JSON.stringify(cls)作为键,但不保证结果。尽管如此,由于它只是一个缓存功能,因为JSON密钥重新排序导致的缓存缺失不会破坏任何内容......