Performance-Steigerung Frontend: Implementierung eines Promise-Caches für ähnliche GET-Anfragen

@pierre-gilles,

Eine kleine Frage. Heute, im Bearbeitungsmenü, erhalten wir die Liste der Geräte / Funktionen x Mal, wobei x die Liste der Boxen ist, beim Öffnen jedes Dashboards?

Falls das der Fall ist, wäre es interessant, die Liste der Geräte, die beim Öffnen des Bearbeitungsmodus abgerufen wird, zu teilen? Oder hätte das keine Auswirkungen?

Ja, tatsächlich!

Das könnte interessant sein, aber es ist nicht so einfach, wenn man es gut machen will ^^

Warum, gibt es bei dir ein Problem damit?

Tatsächlich, mit all den Tests an den Diagrammen, wenn ich Dashboards mit vielen Chart-Boxen + Geräten habe, dauert es eine Weile, bis sie angezeigt werden (2/3 Sekunden). An sich nichts Ernstes, aber man sieht, dass die Verarbeitung der Gerätelisten Zeit in Anspruch nimmt.

Später werde ich genauer untersuchen, ob es die mehrfachen „get devices“-Aufrufe sind, die Zeit in Anspruch nehmen, oder ob es die Verarbeitung dahinter ist, um die Listen der Features zu erstellen, indem die ausgewählten entfernt werden (Ich vermute, dass es der „get device“-Aufruf ist, da das auch ohne Auswahl auftritt).

Aber ehrlich gesagt ist es an sich nicht störend. Es wäre nur flüssiger ^^

Ah, ich verstehe!

Man könnte ein Promises-Cache-System implementieren, um zu verhindern, dass zwei Anfragen gleichzeitig gesendet werden.

Beispiel: Zwei Widgets rufen dieselbe API auf. Das erste Widget sendet die Anfrage und das zweite wartet einfach auf das Ergebnis derselben Anfrage.

Damit werden nicht zwei parallele Aufrufe für dieselbe Sache gemacht, aber es gibt auch keine Caching-Probleme, da nur die Ausführung (nicht das Ergebnis) zwischengespeichert wird.

Ich kann mir die Logik, die tatsächlich performen sollte, sehr gut vorstellen.
Aber was den Code angeht, kann ich mir das überhaupt nicht vorstellen :stuck_out_tongue_winking_eye:

Soll ich ein GitHub-Issue für unser gutes Gedächtnis erstellen? ^^

Ja, du kannst erstellen!

Ich habe einen PR erstellt, der diese Funktion sowohl lokal als auch über Gladys Plus implementiert :slight_smile:

Der PR:

Wenn du den Unterschied auf Gladys Plus testen möchtest:

https://add-cache-for-pending-reques.gladys-plus.pages.dev

Ich wäre neugierig, den Unterschied bei dir zu sehen! Bei mir ist es schon relativ schnell, also sehe ich nicht viel Unterschied

Das ist unschlagbar!! Ein leichtes Laden für die erste Box und der Rest ist sofort da ^^

Willst du ein GIF zum Vergleich?

Du kannst ein kleines mp4 auf dem Forum posten :slight_smile:

(vorausgesetzt, es ist ausreichend komprimiert)

Vorher / Nachher, siehst du den Scrollbalken links, der weiter wächst ^^ :
visutempscharge2-ezgif.com-optimizevisu temps charge1

Super, ich merge :slight_smile:

In Gladys Assistant 4.52.0 behoben: