Cum se face un cache/memorizor în BackboneModel

Să presupunem că am o vizualizare care poate face model.fetch() și apoi o cerere către server.

Aș dori să pun în aplicare:
1) Un checker capabil să memoreze rezultatul 2) reîmprospătați rezultatul (trimiterea cererii către server) numai dacă ultima solicitare către server este mai veche de zece minute.

Ce ar trebui să fac? Există deja o bucată de cod pentru a face asta?

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

    });

});
0
@ParthThakkar nu exact, dacă vizualizarea face un model.fetch() mai vechi de 10 minute decât să actualizeze modelul.
adăugat autor underscore666, sursa
@ParthThakkar Respect mai vechi la aceeasi ultima cerere catre server
adăugat autor underscore666, sursa
vrei să spui, la fiecare zece minute, o nouă cerere ar trebui făcută?
adăugat autor Parth Thakkar, sursa
mai vechi de 10 minute? mai vechi cu privire la ce? precedentul fetch() . Este un pic cam confuz, puteți să vă editați întrebarea pentru ao face mai clară?
adăugat autor Parth Thakkar, sursa

3 răspunsuri

Acest cod face salvarea în spațiul de stocare local pentru implementarea unui cache http: //documentcloud.github .com/coloana vertebrală/docs /-coloana vertebrală localstorage.html .

Este destul de simplu să adăugați o logică în cazul "citi" pentru a fi preluată de la server dacă datele sunt mai vechi de 10 minute.

0
adăugat
Nisa, presupun ca in acest fel ar trebui sa adaug doar doua linii de cod ... va fi frumos sa ai un exemplu.
adăugat autor underscore666, sursa

Așa cum spunea codemonkey, stocarea locală ar fi o opțiune bună. Dar dacă nu doriți să utilizați o bibliotecă pentru aceasta, puteți utiliza această clasă pentru a extinde acele modele care necesită funcționalitatea cache-ului.

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

});
0
adăugat

Am descoperit că https://github.com/Ask11/backbone.offline funcționează foarte bine pentru pe mine.

Singurul viciu este că folosește localStorage, de asemenea, puteți opta pentru mai mult sprijin, mergând cu rescrierea bucăților și pieselor pentru utilizarea cu amplify.store http://amplifyjs.com/api/store/ .

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com