Actualmente estoy trabajando en un proyecto con una organización de la siguiente manera:
- Cliente : obtiene datos del servidor principal a través de la API REST.
- Servidor : solicita datos de otros servidores a través de API de terceros
- API de terceros : servicios fuera de mi control que proporcionan datos al servidor (Reddit, Hackernews, Quora, etc.)
En aras de la discusión, supongamos que el cliente primero necesita una lista de elementos de cada una de las API de terceros. De esta lista, se elegirá un elemento en el que el cliente necesita ver el contenido completo del elemento, así como las respuestas (es decir, comentarios) al elemento. Estoy tratando de decidir entre tres opciones:
A la carta
En este enfoque, tendría 3 puntos finales separados en mi servidor: uno para obtener la lista de elementos, uno para obtener el contenido principal de un elemento y otro para obtener las respuestas del elemento.
- Pros: nunca hago más solicitudes de las que necesito, las solicitudes deben ser pequeñas, por lo que generalmente deben ser más rápidas.
- Contras: Tengo que hacer muchas solicitudes. Después de elegir un elemento de la lista, el usuario puede tener que esperar antes de ver el contenido principal y luego esperar aún más para ver las respuestas
Caché del lado del servidor
En esta solicitud, haría una sola llamada a mi servidor para "buscar" todos los datos de todas las fuentes. Los datos se almacenarían en caché en el servidor. El cliente tendría los mismos puntos finales REST que antes, excepto que no habría mucha espera entre llamadas ya que mi servidor ya tiene los datos y solo tiene que alimentarlos al cliente.
- Pros: sigue siendo fácil de implementar en el lado del cliente, pero sin los problemas de latencia
- Contras: Un poco más complicado en el lado del servidor, y la primera llamada podría tomar mucho, mucho tiempo.
Caché del lado del cliente
Este escenario es similar al anterior, excepto que el cliente solo hace una solicitud al servidor: dame todos los datos. A partir de aquí, es responsabilidad del cliente guardar los datos y usarlos adecuadamente.
- Pros: fácil implementación del servidor, muy rápida después de la primera llamada
- Contras: la primera llamada será muy lenta, la implementación más complicada del lado del cliente
No estoy seguro de cuál es el mejor enfoque, o si tal vez me estoy perdiendo la solución obvia. Cualquier consejo sería muy apreciado!