Por ejemplo, si tengo que ordenar una matriz de datos de una base de datos para agregarla al cuerpo de una página web. En términos de rendimiento, ¿debería ordenarlos en el lado del servidor y luego enviarlos al cliente o debería enviar los datos tal como están y ordenarlos en el lado del cliente o no hay diferencia?
Si lo hace en el cliente, entonces cada cliente tiene que ordenar los datos sin importar qué tan rápido sea la computadora del cliente. Puede ser la computadora portátil ultra poderosa de un desarrollador o puede ser el teléfono Android económico de alguien de 5 años.
Si lo hace en el servidor, entonces el servidor tiene que ordenar los datos de cada cliente y usted tiene que pagar por los recursos informáticos. Sin embargo, tiene la oportunidad de almacenar en caché los datos ordenados, lo cual es un ahorro (si los datos no cambian con demasiada frecuencia).
No hay una respuesta única para todos aquí.
Este es un problema común con el que los desarrolladores principiantes, intermedios y expertos pueden tener problemas. Es realmente una pregunta arquitectónica que se responde mejor con el mayor contexto posible.
¿En qué se ejecuta su API? Si está hospedando en la nube (AWS, Azure, etc.), ¿está tratando de minimizar los costos de hospedaje minimizando el uso de recursos? Si es así, enviar ese trabajo a los clientes puede ayudar a escala, pero probablemente sea insignificante para aplicaciones pequeñas.
¿Qué pasa con sus clientes? ¿Solo admite máquinas de escritorio en un entorno empresarial donde existe una alta probabilidad de que pueda generalizar sus especificaciones? ¿O los dispositivos IoT con recursos informáticos mínimos se comunican con su API? En el último caso, es posible que el dispositivo del cliente no tenga la memoria o el poder de cómputo para ordenar los datos mientras cumple con el resto de sus funciones. ¿Qué pasa con los dispositivos móviles que pueden tener entre 10 y 20 años?
¿Este comportamiento es fijo en su API o los clientes pueden solicitar la clasificación del lado del servidor? ¿Qué tipo de flexibilidad desea que proporcione su API y qué tan factible es implementar cambios y parámetros para cada faceta? ¿En qué momento está haciendo demasiado, oscureciendo el propósito de la API con una gran cantidad de botones y diales para configurar o ajustar?
En mi experiencia personal, me gustan los ORM como Sequelize que pueden exponer mucha flexibilidad en su API con poco trabajo, pero estas herramientas pueden tener un costo computacional y problemas de seguridad potenciales (pero generalmente poco frecuentes). Son implementaciones muy generales que no siempre son perfectas para su caso de uso.