Al editar y guardar publicaciones extremadamente largas (de alrededor de 100.000 caracteres), nos encontramos con un problema de tiempo de espera del servidor backend. El servidor se vuelve inresponsive durante la operación de guardado, lo que genera errores 502/504. La consola del frontend muestra la siguiente pila de errores:
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
Realizamos algunas pruebas comparativas que sugieren que el cuello de botella está en el cálculo de la diferencia (diff) entre las versiones antigua y nueva:
- Editar directamente la publicación larga A convirtiéndola en la publicación larga B y guardar siempre provoca un tiempo de espera con error 502/504.
- Borrar primero la publicación larga, guardar un marcador de posición corto (por ejemplo, de 5 caracteres), y luego pegar el contenido completo B y guardar se completa rápidamente.
Parece que el motor de Diff actual tiene dificultades con casos extremos que involucran texto muy largo combinado con un alto porcentaje de cambios. ¿Sería posible añadir un mecanismo de respaldo de rendimiento? Por ejemplo, cuando el texto es extremadamente largo y la proporción de modificaciones es alta, el sistema podría tratarlo como una «Reescritura Completa» en lugar de realizar un diff detallado línea por línea.
¿Tiene el equipo algún plan para optimizar el manejo de Diff para publicaciones grandes, o introducir algún tipo de degradación elegante / protección para dichos escenarios? Otra idea sería permitir que el guardado tenga éxito primero y calcular el diff de forma asíncrona después.