La aceleración dinámica de sitios (DSA) es un grupo de tecnologías que hacen que la entrega de sitios web dinámicos sea más eficiente. [1] Los fabricantes de controladores de entrega de aplicaciones y redes de entrega de contenido (CDN) utilizan una serie de técnicas para acelerar los sitios dinámicos, entre las que se incluyen:
Un dispositivo de borde, ya sea un ADC o un CDN, es capaz de realizar multiplexación TCP que puede colocarse entre servidores web y clientes para descargar servidores de origen y acelerar la entrega de contenido.
Por lo general, cada conexión entre cliente y servidor requiere un proceso dedicado que se encuentra en el origen durante la duración de la conexión. Cuando los clientes tienen una conexión lenta, esto ocupa parte del servidor de origen porque el proceso tiene que permanecer activo mientras el servidor espera una solicitud completa. Con la multiplexación TCP, la situación es diferente. El dispositivo obtiene una solicitud completa y válida del cliente antes de enviarla al origen cuando la solicitud ha llegado completamente. Esto descarga a los servidores de aplicaciones y bases de datos, que son más lentos y más costosos de usar en comparación con los ADC o CDN. [2]
El protocolo HTTP tiene un sistema integrado para el control de caché , que utiliza encabezados como ETag , "expires" y "last modified". Muchos CDN y ADC que afirman tener DSA, han reemplazado esto con su sistema, llamándolo almacenamiento en caché dinámico o control de caché dinámico. Les brinda más opciones para invalidar y omitir el caché sobre el control de caché HTTP estándar. [3]
El propósito del control de caché dinámico es aumentar la relación de aciertos en la caché de un sitio web, que es la relación entre las solicitudes atendidas por la caché y las atendidas por el servidor normal. [4]
Debido a la naturaleza dinámica de los sitios web 2.0, resulta difícil utilizar el almacenamiento en caché web estático . La razón es que los sitios dinámicos, por definición, tienen contenido personalizado para diferentes usuarios y regiones. Por ejemplo, los usuarios de dispositivos móviles pueden ver contenido diferente al que ven los usuarios de computadoras de escritorio, y los usuarios registrados pueden necesitar ver contenido diferente al que ven los usuarios anónimos. Incluso entre usuarios registrados, el contenido puede variar ampliamente, por ejemplo, en sitios web de redes sociales .
El almacenamiento en caché estático de páginas dinámicas específicas del usuario introduce un riesgo potencial de servir contenido irrelevante o de terceros a los usuarios equivocados, si el identificador que permite al sistema de almacenamiento en caché diferenciar el contenido, la URL/solicitud GET, no se varía correctamente añadiéndole tokens/claves específicos del usuario.
El control de caché dinámico tiene más opciones para configurar el almacenamiento en caché, como el control de caché basado en cookies , que permite servir contenido desde el caché en función de la presencia o ausencia de cookies específicas. Una cookie almacena la clave de identificación única de un usuario conectado en su dispositivo y ya está implementada para autenticar a los usuarios al ejecutar cualquier página que abra una sesión. En un sistema de almacenamiento en caché dinámico, se hace referencia a los cachés mediante la URL y las claves de las cookies, lo que permite habilitar de manera sencilla el servicio de cachés predeterminados para usuarios anónimos y cachés personalizados para usuarios conectados (sin obligarlo a modificar el código para que agregue identificadores de usuario adicionales a la URL, como en un sistema de almacenamiento en caché estático).
Si el contenido personalizado no se puede almacenar en caché, se puede poner en cola en un dispositivo de borde. Esto significa que el sistema almacenará una lista de posibles respuestas que podrían necesitarse en el futuro, lo que permite que se proporcionen rápidamente. Esto difiere del almacenamiento en caché, ya que las respuestas precargadas solo se proporcionan una vez, lo que resulta especialmente útil para acelerar las respuestas de las API de terceros , como los anuncios. [5]
La optimización de rutas, también conocida como "enrutamiento basado en latencia", optimiza la ruta del tráfico entre los clientes y los diferentes servidores de origen con el fin de minimizar la latencia. La optimización de rutas puede ser realizada por un proveedor de DNS [6] o por una CDN [7] .
La optimización de rutas consiste en medir múltiples rutas entre el cliente y el servidor de origen y luego registrar la ruta más rápida entre ellos. Esta ruta se utiliza luego para entregar contenido cuando un cliente en una zona geográfica específica realiza una solicitud. [8]
Aunque la optimización de front-end (FEO) y la optimización de DSA describen un grupo de técnicas para mejorar la distribución de contenido en línea, funcionan en diferentes aspectos. Existen superposiciones, como la compresión de datos sobre la marcha y el control mejorado de la memoria caché; sin embargo, las diferencias clave son: