Cuándo y cuándo no usar una CDN

13

Estoy trabajando en una aplicación web que carga un par de pequeñas imágenes gif en la pantalla. Estoy usando una ruta relativa, lo que significa que se cargan desde el mismo servidor web que sirve a la página php. La operación es instantánea y estoy en un continente diferente al servidor web.

Acabo de probar una red CDN para esto (Cloudfront), pensando que acercar los archivos estáticos al usuario es una gran idea. Sin embargo, todos estos archivos ahora tardan aproximadamente medio segundo en mostrarse en la pantalla. Ahora tengo que usar una ruta absoluta, por supuesto (https://xyzvf.cloufront.net/images/)

¿Porqué es eso? ¿Es el camino absoluto un problema? Estoy reduciendo las solicitudes HTTP a mi propio servidor, lo cual es algo bueno, pero ese retraso es molesto. ¿No es CDN adecuado para esto?


fuente
44
Depende más o menos de dónde se encuentra el CDN. Si tiene muchas imágenes pequeñas, ¿es una opción combinarlas en un sprite? Eso significaría una sola solicitud para cargar todas las imágenes.
Tienen estas ubicaciones: michaelgaigg.com/blog/images/amazon-cloudfront.jpg Estoy en Europa, y cargar las imágenes desde mi servidor web en los EE. UU. Es más rápido que cargar desde Alemania o cualquier lugar de Europa desde el que me sirve Amazon. ¿O tal vez el problema no es el tiempo de carga sino algo más? Usar un sprite es una gran idea, gracias.
También puede usar una URL sin protocolo con el nombre de host, como "//xyzf.cloudfront.net/images". Esto le permite aprovechar las cachés de proxy corporativo e ISP para almacenar en caché las versiones de las imágenes que no son SSL. Esto puede tener un gran beneficio tanto para su experiencia de visitante como para la carga del servidor / ancho de banda. Los visitantes de nuestro sitio son casi todos de instituciones financieras con sede en los EE. UU., Y detectamos aproximadamente el 85% de las visitas detrás de algún tipo de proxy de almacenamiento en caché. YMMV, así que prueba tu propio sitio y tráfico, por supuesto.
rmalayter

Respuestas:

6

Un problema podría ser DNS o keep-alive, es decir, el navegador ya tiene la dirección IP de su servidor y tiene una conexión abierta, mientras que tiene que resolver el nombre del servidor CDN y luego abrir una nueva conexión allí, y una de esas o ambos constituyen el retraso que estás viendo.

Spriting, aunque sigue siendo una buena idea, no ayudaría con esos problemas. De hecho, no se me ocurre ninguna solución. El único consuelo es que la demora de medio segundo no sería mucho más larga si tuvieras miles de imágenes (y archivos CSS y archivos JS y cualquier otro archivo estático que necesitaras) y no pondría más estrés en tu servidor de origen si un mil usuarios más lo golpearon.

Malvolio
fuente
Esto suena una campana. Debo mencionar que la primera llamada al servidor CDN se realiza cuando se necesita la primera imagen, como en el medio de la página.
Ah, entonces puede obtener un mejor rendimiento (percibido) si hace una referencia, cualquier referencia, al CDN muy temprano en la página. La mejor manera podría ser colocar sus archivos CSS en el CDN y colocar las linketiquetas en la headsección, para que el proceso de conexión comience de inmediato.