Beim Bearbeiten und Speichern extrem langer Beiträge (ca. 100.000 Zeichen) sind wir auf ein Backend-Timeout-Problem gestoßen. Der Server reagiert während des Speichervorgangs nicht mehr, was zu 502/504-Fehlern führt. In der Frontend-Konsole erscheint die folgende Fehlerstapelmeldung:
ajax-error.js:36:15
l ajax-error.js:36
u ajax-error.js:75
d ajax-error.js:84
Ember 41
update rest.js:72
update rest.js:72
save rest.js:115
editPost composer.js:1147
Ember 6
Ich habe einige Vergleichstests durchgeführt, die darauf hindeuten, dass der Flaschenhals in der Berechnung der Differenz zwischen der alten und der neuen Version liegt:
- Das direkte Bearbeiten eines langen Beitrags A zu einem langen Beitrag B und das anschließende Speichern löst konsistent einen 502/504-Timeout aus.
- Das Leeren des langen Beitrags, das Speichern eines kurzen Platzhalters (z. B. 5 Zeichen), das Einfügen des vollständigen neuen Inhalts B und das anschließende Speichern erfolgt schnell.
Es scheint, dass die aktuelle Diff-Engine mit extremen Fällen kämpft, die aus sehr langem Text in Kombination mit einem hohen Prozentsatz an Änderungen bestehen. Wäre es möglich, einen Leistungs-Fallback-Mechanismus hinzuzufügen? Zum Beispiel könnte das System den Vorgang als „Vollständige Neuformatierung“ behandeln, wenn der Text extrem lang ist und das Änderungsverhältnis hoch ist, anstatt eine detaillierte zeilenweise Diff-Berechnung durchzuführen.
Hat das Team Pläne, die Diff-Behandlung für große Beiträge zu optimieren oder eine Art graceful degradation / Schutz für solche Szenarien einzuführen? Eine weitere Idee wäre, das Speichern zunächst erfolgreich abzuschließen und die Diff-Berechnung asynchron im Hintergrund durchzuführen.