Ember-Data .finden() vs .alle() - wie die Kontrolle-cache?
Mir wurde gesagt, , dass, um nicht zu machen, fordern alle, die Zeit kann man nutzen .alle () - Methode zum laden von Daten, gehalten in der Filiale. Aber wie funktioniert Ember deal mit cache? Ich habe ein paar Fragen stellen.
Wie kontrollieren Sie den cache? Wenn Sie verwenden .find() und wenn .alle(). Tun Sie verwenden .finden() und dann .alle()? Für wie lange?
Tut .alle() haben einige Ablaufdatum, so dass nach einiger Zeit, es kann eine neue Anfrage? Oder er verwendet den Lokalen Speicher, so dass ich haben, um es zu deaktivieren manuell?
Vermute, dass ich einige Daten möchte ich aktualisieren nur einmal die Woche? Wie sollte ich dies angehen? Jetzt jedes mal, wenn ich oder re-Besuch der gleichen route eine neue Anfrage gestellt wird. Wie kann ich diese vermeiden?
- haben Sie einen Blick auf diese offene Frage: github.com/emberjs/data/issues/235
- Ich würde lieber wissen, wie kann ich das laden der Daten, wenn eine app gestartet wird (nicht über Straßen, wie ich nicht haben, um Sie zu aktualisieren so oft). Ist es möglich?
- Ich versuchte, die Antwort auf Ihre andere Frage ... 🙂
- Grundlegende Zweifel, Ob meine Daten im backend ändert sich sehr oft durch mehrere service-ich setze api, das zwingt mich zum Neuladen der Daten immer mit verlangen. Ich finde nicht die Verwendung einer Ember-Shop jetzt. Ember Modell ist auch immer abgeschlossen, jedes mal, wenn Sie versuchen zu definieren, komplizierte Modell. Ist Ember zu Speichern und Ember Modell Erforderlich? Ajax und Reaktion allein kann nicht verwendet werden? Dies sind meine grundlegenden Zweifel für sehr lange Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
So beginnt mit der Beantwortung der Frage aus deinem Kommentar:
So OK technisch ist dies immer noch über Routen, sondern der beste Weg, um Daten zu laden, wenn eine app "startet", ist über die Anwendung Route-Modell Haken.
Den router warten Sie Versprechen zurückgegeben, die von find() zu lösen, so können Sie sicher sein, dass die Antwort vom server zurück kommen, bevor alle anderen Routen sind eingetragen.
Meist brauchen Sie sich keine sorgen. Sie können refresh() ein einzelner Datensatz nach einiger timeout, wenn nötig.
Hängt davon ab, was Sie erreichen wollen. In unserer app verwenden wir find() in der Anwendungs-route, die dann entweder alle() oder ein filter (), in anderen Routen.
NÖ. Es wird nie eine neue Anfrage
Es keine lokalen Speicher verwenden, werden Datensätze in Speicher. So sicher ein F5 löscht den cache.
Also OK, nehmen wir an, Sie suchen (noch) nur in der Anwendung, die route, und dass der Benutzer behält browser öffnen, für 1 Woche, und die Aufzeichnungen sind abgelaufen. Es gibt viele Möglichkeiten, zu aktualisieren, was easy/best hängt davon ab, ob Sie alle verfallen sofort oder, wenn Sie Zeit -, die eine zu einer Zeit.
model
Haken für ein bestimmtes Modell? Beim laden ein paar Modelle auf einmal, sollte ichsetupController
Haken?return
in der route-Modell. Verspricht nicht geehrt werden, es sei denn, Sie sind zurückgekehrt.Ember.RSVP.hash
würde, oder nicht?Ember.RSVP.hash when I need to return arrays (recentlyAdded, Incomplete, etc.) of the same model. So if you are calling
finden()` mehr als einmal...Was Sie nennen cache ist der Inhalt im Online-Shop. Normalerweise gibt es 2 Möglichkeiten zur Aktualisierung speichern, um änderungen auf der backend-Seite: