Eine Web-App, die mit hochmodularen, kleinen Komponenten entwickelt wurde (in diesem Fall unter Verwendung von AngularJS-Anweisungen, aber genauso gut WebComponents, ReactJS-Komponenten oder eine andere Technologie). Komponenten haben häufig asynchrone REST-API-Aufrufe, bei der Initialisierung oder bei der Benutzerinteraktion. Dieses Design verursacht viele API-Aufrufe pro Seite (manchmal 20+). Gibt es ein Problem mit diesem Design? Einige schlagen vor, die API-Aufrufe zu größeren clientseitigen Diensten zusammenzufassen, die als Singletons fungieren. Daher können 10 API-Aufrufe auf 1 reduziert werden, obwohl eine Seite möglicherweise nur einen Teil dieser Daten verwendet. Gibt es rote Fahnen oder Probleme mit diesem Design? Welches sollte bevorzugt werden?
8
Antworten:
Browser begrenzen die Gesamtzahl der gleichzeitigen Anforderungen
/programming/561046
Also ja, es gibt ein Problem mit diesem Design. Ich denke jedoch, dass die akzeptierte Antwort darin besteht, zu einer Web-Sockets-Implementierung zu wechseln, bei der Sie eine einzelne Verbindung verwenden, aber viele Nachrichtentypen für die Kommunikation mit dem Server verwenden
quelle
Das sollte es nicht geben. Die Tatsache, dass jede Anfrage klein und asynchron ist, bedeutet, dass Sie Ihre Web-App erheblich beschleunigen können, anstatt auf eine einzelne große Anfrage warten zu müssen, die alles blockiert.
Stellen Sie einfach sicher, dass Ihr Javascript richtig asynchron ist und Dinge tun kann, während Ihre anderen Anfragen warten, und Sie erhalten eine viel bessere App, als wenn Sie eine massive Anfrage hätten, die alles abruft.
Nachdem alle Browser für das gleichzeitige Laden vieler URLs ausgelegt sind, kann selbst eine typische Standardwebseite zehn, wenn nicht Hunderte von Anfragen an Bilder, CSS, Javascript, Iframes usw. usw. Haben
quelle
Vergessen Sie nicht die Größe jeder Netzwerkanforderung. Wenn jede Anforderung nur 2 KB Daten zurückgibt, ist die Netzwerkanforderung für diese kleine Datenmenge im Allgemeinen zu teuer.
Wenn die Netzwerkanforderung bis zu 400 KB groß ist, teilen Sie sie in zwei Teile auf. Im Allgemeinen sind jedoch nicht genügend Daten für eine einzelne Netzwerkanforderung das Problem.
quelle
Einige Überlegungen hier:
Performance
Wenn Sie eine akzeptable Leistung sehen, sollten Sie sich darüber keine Sorgen machen. Wenn Sie HTTP2 ausführen können, sollten Sie eine Leistungssteigerung feststellen. [1] .
Design
Wie bei jedem Design gibt es keine festen Regeln, ob Sie viele kleine oder wenige große Anforderungen ausführen sollten. Einige Dinge zu beachten:
Sind viele der Anrufe voneinander abhängig? Wenn Sie eine komplexe Abhängigkeitsbeziehung zwischen verschiedenen Aufrufen haben, kann dies die Wartung erschweren. In diesem Fall wäre eine Stapelverarbeitung von Antwortdaten sinnvoll.
Teilen verschiedene Komponenten viele der gleichen Daten? In diesem Fall könnten Sie einen zentralen Punkt haben, der die gemeinsam genutzten Aufrufe ausführt und den Komponenten den Zugriff auf die gemeinsam genutzten Daten ermöglicht.
Behalten Sie den Wartungsaufwand der kleinen Komponenten im Auge, wenn Sie separate Anrufe tätigen. Sie werden wissen, wann die Verwaltung schwierig wird und dann möglicherweise eine Änderung erforderlich ist. Das Ändern eines Entwurfs basierend auf hypothetischen zukünftigen Anforderungen kann zu Entwurfsfehlern führen, da Sie genau vorhersehen müssen, welche Probleme Sie in Zukunft haben werden. Wenn es jetzt gut funktioniert, wäre es auch unnötig, es zu ändern.
1: "HTTP / 2 ist vollständig gemultiplext, sodass mehrere Dateien und Anforderungen gleichzeitig übertragen werden können, im Gegensatz zu HTTP1.x, bei dem jeweils nur eine Anforderung / Verbindung akzeptiert wurde. HTTP / 2 verwendet dieselbe Verbindung zum Übertragen verschiedener Dateien Dateien und Anforderungen, um zu vermeiden, dass für jede Datei, die zwischen einem Client und einem Server übertragen werden muss, eine neue Verbindung hergestellt werden muss. " - https://css-tricks.com/http2-real-world-performance-test-analysis/
quelle