1

model.fetch() を作成してからサーバーにリクエストできる View があるとします。

私は実装したいと思います:
1) 結果を記憶できるチェッカー
2) サーバーへの最後の要求が 10 分より古い場合にのみ、結果を更新します (サーバーへの要求を行います)。

私は何をすべきか?
それを行うためのコードはすでにありますか?

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 に答える