1

假设我有一个 View 可以制作 model.fetch() 然后向服务器发出请求。

我想实现:
1)能够记住结果的检查器
2)仅当对服务器的最后一次请求超过十分钟时才刷新结果(向服务器发出请求)。

我应该怎么办?
是否已经有一段代码可以做到这一点?

define([], function() {

    var MyModel = Backbone.Model.extend({

    url: function () {
        return "http://localhost/restapi/model/";
    },

    fetch () {
        if(diffTime > 10minutes) {
            // make request to the server
        }
        else {
            // return memo
        }
    }    

    });

});
4

3 回答 3

3

您需要覆盖 Backbone.sync 方法http://documentcloud.github.com/backbone/#Sync

此代码保存到本地存储以实现缓存http://documentcloud.github.com/backbone/docs/backbone-localstorage.html

如果数据超过 10 分钟,在“读取”情况下添加一些逻辑以从服务器获取是相当简单的。

于 2012-05-24T16:01:12.797 回答
1

正如 codemonkey 所说,localstorage 将是一个不错的选择。但是,如果您不想为此使用库,则可以使用此类来扩展那些需要缓存功能的模型。

var CachedModel = Backbone.Model.extend({

    lastFetch: null,    // millisec.
    cache: { }
    fetch: function () {
        if(!this.lastFetch || (lastFetch - Date.now() > 10*60*1000) {
            // make request to the server
        }
        else {
            // return this.cache
        }
    }    

});
于 2012-05-24T16:07:42.083 回答
0

我发现https://github.com/Ask11/backbone.offline非常适合我。

唯一的缺点是它使用 localStorage,您还可以通过重写用于 amplify.store http://amplifyjs.com/api/store/的点点滴滴来选择更多支持。

于 2012-05-29T00:24:52.713 回答