Closed nestor98 closed 4 years ago
Si sobra el tiempo mirar desnormalización, por ejemplo con esto. Interesante para detalles de playlist (playlist->cancion->album->artista)
Aparentemente, el mayor problema es el lazy fetching: cuando un serializador devuelve una lista de varios objetos suele hacer una o más peticiones a la base de datos para cada uno. (1705 para la lista de canciones, por ejemplo).
Estudiar prefetch_related y select_related de django y/o caches (una implementacion popular), como en este articulo
Se ha mejorado mucho la velocidad con eager fetching (prefetch_related y select_related), y quitando algun bug que hacía que se actualizaran las letras de las canciones y las biografías de los artistas cuando no debían.
Además, los clientes han implementado paginación (en la api por defecto no se pagina, pero sí cuando se pasan los queryparams limit y offset)
Hay que ver dónde está el cuello de botella para que en los álbumes por ej el cliente tarde unos 3 segundos en cargarlos. Implementar paginación junto con los clientes (cf609850705e15bb133527b9047849c35889439d) y ver si podemos reducir el número de peticiones a este servidor al cargar álbumes, etc. si vemos que ese es el problema.