Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在BackboneModel中制作缓存/存储器_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何在BackboneModel中制作缓存/存储器

Javascript 如何在BackboneModel中制作缓存/存储器,javascript,backbone.js,Javascript,Backbone.js,假设我有一个视图,可以生成model.fetch(),然后向服务器发出请求 我想实现: 1) 能够记住结果的检查器 2) 仅当向服务器发出的最后一个请求超过十分钟时,才刷新结果(向服务器发出请求) 我该怎么办? 是否已经有一段代码来实现这一点 define([], function() { var MyModel = Backbone.Model.extend({ url: function () { return "http://localhost/rest

假设我有一个视图,可以生成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
        }
    }    

    });

});

您需要重写Backbone.sync方法

此代码执行保存到本地存储以实现缓存的操作


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

您需要覆盖Backbone.sync方法

此代码执行保存到本地存储以实现缓存的操作


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

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

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
        }
    }    

});

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

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
        }
    }    

});
我发现这对我来说真的很好

唯一的缺点是它使用本地存储,您也可以选择通过重写用于amplify.store的位和片段来获得更多支持。

我发现它对我来说非常有效


唯一的缺点是它使用localStorage,您还可以选择通过重写用于amplify.store的位和段来获得更多支持。

您的意思是,每十分钟应该发出一个新请求?@ParthThakkar不完全是,如果视图生成的模型.fetch()比刷新模型的时间早10分钟。是否早于10分钟?关于什么?上一个
fetch()
。这有点让人困惑,你能编辑这个问题让它更清楚吗?@ParthThakkar Older关于对服务器的最后一个请求,你的意思是,每十分钟,应该发出一个新请求?@ParthThakkar不完全正确,如果视图生成模型。fetch()比刷新模型早10分钟。早10分钟?关于什么?上一个
fetch()
。这有点让人困惑,你能编辑一下这个问题让它更清楚吗?@ParthThakkar Older关于服务器的最后一个请求nice,我想这样我应该只添加两行代码。。。有一个例子会很好。很好,我想这样我应该只添加两行代码。。。有个例子就好了。