¿En qué “increíble cantidad de gastos generales” incurres? De cualquier manera, esa información debe enviarse de servidor a cliente. La única diferencia es que una página pretratada requiere menos solicitudes HTTP.
La carga de la primera página generalmente es el momento más crítico para el rendimiento web, ya que nada se ha almacenado en la memoria caché y, con aplicaciones web complejas, hay muchos activos que deben cargarse antes de que se pueda procesar la página.
Si tiene un servidor y una conexión lo suficientemente rápidos, está siguiendo las mejores prácticas para evitar el bloqueo, entonces su principal cuello de botella serán los límites de conexión. La representación del lado del servidor ayuda enormemente (al igual que la concatenación de sus plantillas, JS y CSS).
Imagine que tiene una interfaz de usuario web con varios bloques de contenido dinámico. Tal vez un bloque es una lista de amigos, otro es un muro de mensajes y otro es un servicio de noticias. Tal vez dentro de la fuente de noticias es una aplicación incrustada que tiene sus propios bloques dinámicos, como una lista de logros y juegos activos.
Para representar esa página, es posible que deba realizar todas las siguientes llamadas a la API:
- buscar los detalles de cada amigo (nombre, estado, avatar)
buscar lista de mensajes
- buscar los detalles de esos usuarios
buscar noticias
- traer aplicación incrustada
- alcanzar logros
- buscar juegos activos
buscar hilos de comentarios
- buscar los detalles de esos usuarios
Pero espera, solo son los datos, también necesitas cargar tus plantillas / componentes por primera vez:
- lista de amigos / elemento de la lista de amigos
- lista de mensajes / elemento de la lista de mensajes / barra de herramientas de mensajes
- lista de noticias / noticia / comentario / comentario barra de herramientas
- aplicación incorporada / lista de logros / logro / juego activo
- ui biblioteca de componentes más pequeños y genéricos, como menús, paneles y botones
Y aún no hemos llegado a su JS, CSS, imágenes y webfonts. Además, es probable que también deba realizar algunas llamadas API adicionales para cosas como autenticación de usuario y otras notificaciones de aplicaciones.
La mayoría de los navegadores solo permitirán entre 4 y 8 conexiones por host. Claro, podría duplicar eso con un dominio de activos estáticos o CDN por separado. Pero eso todavía es una gran cantidad de solicitudes que deben hacerse. Además, va a ser mucho más rápido para el renderizador de backend recopilar todos estos datos que para que el navegador haga lo mismo a través de servicios web externos. Entonces, ¿por qué esperar a que el navegador recopile todos estos datos de 4 a 8 elementos a la vez en lugar de preprocesarlos para el servidor?
La ventaja de rendimiento está clara ya sea que sus visitantes estén usando un navegador móvil o un navegador de escritorio.