Parece haber una fuga de memoria en el archivo store.js, cuando los usuarios navegan por diferentes temas, el _identityMap parece crecer rápidamente con cada solicitud RESTful. Sin una lógica de limpieza adecuada, el mapa agotará la memoria con grandes montones de JS.
¿Quizás añadir una función pruneMap a store.js, con un algoritmo FIFO para eliminar los mapas más antiguos, sea suficiente?
Además, la variable const MAX_ITEMS_PER_TYPE = 500; puede discutirse más a fondo para establecer un equilibrio entre el almacenamiento en caché y el almacenamiento en memoria.
Los pasos para reproducir son los siguientes: el usuario salta de un tema a otro usando el “sugerido/relacionado” debajo del tema varias veces sin actualizar la página, y el tamaño de la pila de JavaScript (js heap size) se acumulará desde los 100 MB originales hasta unos 500 MB en mi prueba, si se visitan suficientes temas (especialmente temas con muchas publicaciones debajo). Y volver a la página de inicio no liberará esa parte de la memoria ocupada.
Este tamaño de pila de JavaScript se puede ver desde la consola de rendimiento del navegador, y el consumo de memoria se puede ver desde el administrador de procesos del navegador.
Subí un video de esto adjunto en el PR, solo para mostrar el problema (unos 3 minutos, cuando se usa la misma página durante más horas, la situación empeorará).
Y también agregar un punto de interrupción aquí mostrará la cantidad creciente de elementos en _identityMap