El contexto¿Cómo lidiar con el proceso de carga pesada de los datos que se muestran en el navegador
- Tenemos una aplicación basada en Ember que maneja gran cantidad de datos estructurados (modelos de procesos de negocio).
- ¡Importante! Realmente nos gustaría mantener nuestra aplicación fuera de línea, en la medida de lo posible.
La necesidad
Aunque sólo tenemos que mostrar estos datos, editarlos, y así sucesivamente, no hay show-tapón en el radar ...
Pero ahora, desea aplicar el procesamiento en estos modelos: comprobación de validez, búsqueda de rutas ... y varios tipos de algoritmos que consumen tiempo/memoria.
El problema
hemos podido procesar algoritmos en el servidor, pero que mataría a modo fuera de línea de la aplicación.
Hemos pensado en los trabajadores de la web para evitar la congelación de aplicaciones y algoritmos de proceso en segundo plano, pero nos enfrentamos a un problema importante: la duplicación de datos al pasar los datos al trabajador. El uso de objetos transferibles haría que la aplicación pierda la propiedad (y los datos) durante al menos el cálculo, por lo que no parece viable.
¿Cómo manejarías este problema? ¿Es nuestra única salida el uso de una implementación de nuestros algoritmos "similar a una corito"? ¿Cualquier pista?
Creo que la pregunta importante es si puede permitirse el lujo de no congelar la aplicación. Supongamos que el usuario realiza cambios en los datos mientras el algoritmo se está ejecutando. ¿Serán válidos/relevantes los resultados del proceso que se ejecuta en segundo plano? De lo contrario, probablemente sea mejor mostrar al usuario una barra de progreso y continuar con los cálculos. – Qnan
¿Cuál es el problema con la duplicación de datos? ¿Demasiadas cosas para serializar al trabajador? –
@SimoneGianni El problema principal es la sincronización de datos entre el contexto de UI y el contexto del trabajador –