Ich arbeite derzeit an einem Projekt mit einer Organisation wie folgt:
- Client - Ruft Daten vom Hauptserver über die REST-API ab.
- Server - Fordert Daten von verschiedenen anderen Servern über APIs von Drittanbietern an
- Drittanbieter-APIs - Dienste außerhalb meiner Kontrolle, die Daten für den Server bereitstellen (Reddit, Hackernews, Quora usw.)
Nehmen wir an, der Client benötigt zunächst eine Liste der Elemente aus jeder API eines Drittanbieters. Aus dieser Liste wird ein Artikel ausgewählt, an dem der Kunde den vollständigen Inhalt des Artikels sowie die Antworten (dh Kommentare) auf den Artikel sehen muss. Ich versuche mich zwischen drei Möglichkeiten zu entscheiden:
A la carte
Bei diesem Ansatz hätte ich drei separate Endpunkte auf meinem Server: einen, um die Liste der Elemente abzurufen, einen, um den Hauptinhalt für ein Element abzurufen, und einen, um die Antworten des Elements abzurufen.
- Vorteile: Ich mache nie mehr Anfragen als nötig. Die Anfragen sollten so klein sein, dass sie im Allgemeinen schneller sind.
- Nachteile: Ich muss viele Anfragen stellen. Nach der Auswahl eines Elements aus der Liste muss der Benutzer möglicherweise warten, bis der Hauptinhalt angezeigt wird, und dann noch länger warten, bis die Antworten angezeigt werden
Serverseitiger Cache
In dieser Anfrage würde ich einen einzigen Aufruf an meinen Server senden, um alle Daten für alle Quellen abzurufen. Die Daten würden dann auf dem Server zwischengespeichert. Der Client hat dann dieselben REST-Endpunkte wie zuvor, außer dass zwischen den Aufrufen nicht viel gewartet wird, da mein Server bereits über die Daten verfügt und diese nur an den Client weiterleiten muss.
- Vorteile: Client-seitig immer noch einfach zu implementieren, jedoch ohne Latenzprobleme
- Nachteile: Ein bisschen mehr Server-Seite, und der erste Anruf könnte wirklich sehr, sehr lange dauern.
Clientseitiger Cache
Dieses Szenario ähnelt dem vorherigen, mit der Ausnahme, dass der Client immer nur eine Anfrage an den Server sendet: Geben Sie mir alle Daten. Ab hier liegt es in der Verantwortung des Kunden, die Daten zu speichern und entsprechend zu nutzen.
- Vorteile: Einfache Server-Implementierung, sehr schnell nach dem ersten Aufruf
- Nachteile: Der erste Aufruf wird eine sehr langsame, kompliziertere clientseitige Implementierung sein
Ich bin mir nicht sicher, welcher Ansatz der beste ist oder ob ich die offensichtliche Lösung verpasse. Jeder Rat wäre sehr dankbar!