User-Content direkt anzeigen oder über Save-Response

Dawosch

Neues Mitglied
Guten Abend zusammen,
ich versuche aktuell ein paar "Best Practice" Patterns zu definieren und hänge aktuell an folgender Situation:

Ich habe eine ReactJS App in welcher Benutzer z.B. neue Kommentare erfassen können.
Diese Kommentare sollen nachdem der User auf "Absenden" geklickt hat natürlich direkt angezeigt werden, ohne die Seite neu zu laden.
Hier habe ich meiner Meinung nach zwei Sinnvolle varianten dies zu tun.

Variante 1
Der neue Kommentar wird direkt meinem lokalen Array hinzugefügt und ist somit direkt vorhanden

Pro:
- Der Kommentar kann direkt angezeigt werden ohne auf Antwort des Webservers zu warten

Kontra:
- Informationen wie z.B. die entsprechende DB ID fehlen mir, über welche der neue Kommentar identifiziert werden könnte
- Neue Kommentare von anderen Benutzern werden nicht abgefragt


Variante 2
Hier gibt es zwei Folgemöglichkeiten.
Nach dem Klick auf "Absenden" wird der Kommentar an den Webserver geschickt und gespeichert.

Folgemöglichkeit 1:
Der Webserver schickt den hinzugefügten Eintrag zurück welchen ich dann meinem lokalen Array hinzufügen kann

Pro:
- Alle Informationen sind vorhanden (auch z.B. die ID)
- Weniger Requests als in Folgemöglichkeit 2

Kontra:
- Es muss auf den Response gewartet werden bis der neue Kommentar angezeigt wird
- Neue Kommentare von anderen Benutzern werden nicht abgefragt

Folgemöglichkeit 2:
Nach dem senden fordere ich alle Kommentare neu an und überschreibe mein lokales Array komplett.

Pro:
- Alle Informationen sind vorhanden
- Kommentare von anderen Benutzern (welche in der Zwischenzeit erstellt wurden) werden auch angezeigt

Kontra:
- Es muss auf den Response gewartet werden bis der neue Kommentar angezeigt wird
- Extra Request und ggf. Daten unnötig doppelt geladen


Wie geht ihr in diesem Fall vor?
Sagt ihr, wenn der User alle neue Kommentare haben möchte, soll er die Seite neu laden?

Bin sehr auf eure Meinung gespannt.
 

aligator

Mitglied
Hi,

Es kommt ganz auf deine Anforderungen an. Willst du sofortige Anzeige für bessere UX? Willst du immer aktuell sein (chat-mäßig)? Was genau sind deine Anforderungen?

Ich finde es immer schwierig sowas als generelle best practice zu definieren.

Variante 3:
Eine Möglichkeit, die du noch nicht in Betracht gezogen hast ist die Kombination:
Kommentar mit allen bereits verfügbaren Infos sofort anzeigen und gleichzeitig einen Request ans Backend senden.
Dann sobald der Request durch ist kannst du es mit allen Infos aktualisieren sozusagen on-the-fly, möglichst so dass der Nutzer es (fast) nicht merkt.

Ob du dann noch mal um sicher zu gehen alle Nachrichten lädst, damit auch welche von anderen angezeigt werden, ist dann ein eigenes Thema. Würde ich denke ich nur machen wenn ich wirklich so ne art Realtime-Chat mach. Und in dem Fall wären Websockets mit direkten Events bei neuen Nachrichten sowiso besser.

Für einfache Kommentare in z.B. nem Blog wärs das nicht wert und ich würd tatsächlich einfach erwarten dass der Nutzer die Seite neu lädt, wie es ja im web sowiso üblich ist.

Vorteile:
- das Beste aus beiden Welten: sofort den Beitrag zu sehen und
- nach kurzer Zeit auch zusatzinfos da, wie z.B. die neue ID.

Nachteile:
- Aufwendiger zu implementieren da du verschiedene Möglichkeiten auf ein mal umsetzt

Fazit:
Also Variante 2 + Folgemöglichkeit 1 + Variante 1 = Variante 3.
Variante 2 + Folgemöglichkeit 2 würde ich nicht machen auf einer normalen Webseite.
Wenn du Aktualisierungen unbedingt willst, dann eher mit Websockets. Dies würde ich aber auch nicht bei ner normalen Webseite Machen, da auch Websockets recht viel Hintergrund-Datenverkehr verursachen.
 
Oben Unten