htaccess headers control cache performance cdn browser-cache

performance - control - html cache headers



¿Es mejor usar Cache o CDN? (5)

De acuerdo con @Anthony_Hatzopoulos (+1)

CDN complementa el almacenamiento en caché, también en algunos casos ayudará a optimizar las directivas de almacenamiento en caché.

Por ejemplo, una empresa en la que trabajo para algoritmos integrados de aprendizaje de comportamiento en su CDN para identificar y almacenar en caché objetos generados dinámicamente.

Por lo general, estos objetos no se pueden almacenar en la memoria caché (es decir, [Cache-Control: max-age = 0] encabezado Http) pero en este caso el sistema puede identificar las posibilidades de almacenamiento en caché y anular las direcciones del encabezado HTTP original. (por ejemplo: un producto popular generado dinámicamente que debe ser almacenado en caché o una página de resultados de búsqueda popular que, mientras se genera dinámicamente, aún se presenta en el mismo tiempo a miles de usuarios).

Y sí, antes de que pregunte, el sistema también puede identificar datos personalizados y mucha frescura, para evitar falsos positivos ... :)

La implementación de un algoritmo de este tipo solo fue posible debido a una tecnología CDN de proxy inverso y este es un ejemplo de cómo CDN y Caching pueden complementarse entre sí para crear soluciones de aceleración mejores y más inteligentes.

Estaba estudiando sobre el rendimiento del navegador al cargar archivos estáticos y esta duda ha llegado.

Algunas personas dicen que el uso de archivos estáticos CDN (es decir, Google Code, jQuery más reciente, AJAX CDN, ...) es mejor para el rendimiento, ya que se solicita desde otro dominio que no sea la página web completa.

Otra manera de mejorar el rendimiento es establecer el encabezado Expires en algunos meses más tarde, lo que obliga al navegador a almacenar en caché los archivos estáticos y reducir las solicitudes.

Me pregunto cuál es la mejor manera, pensando en el rendimiento y si puedo combinar ambas.

Gracias de antemano chicos, me encanta StackOverflow.


En última instancia, es mejor emplear ambas técnicas si está realizando la optimización del rendimiento web (WPO) de un sitio, también conocida como optimización de front-end (FEO). Pueden trabajar increíblemente de la mano. Aunque si tuviera que elegir uno sobre el otro, definitivamente elegiría el almacenamiento en caché cualquier día. De hecho, diría que es imperativo que configure el almacenamiento en caché de recursos adecuado para todos los proyectos web, incluso si va a utilizar un CDN.

Almacenamiento en caché

La configuración de los encabezados de Expires y el almacenamiento en caché de los recursos es un deber y debe hacerse el 100% del tiempo para sus recursos. Realmente no hay excusa para no hacer caché. En Apache, esto es muy fácil de configurar después de habilitar mod_expires.c y mod_headers.c . El proyecto HTML5 Boilerplate tiene un buen ejemplo de implementación en el archivo .htaccess y si su servidor es algo como nginx, lighttpd o IIS, consulte estas otras configuraciones de servidor .

Aquí hay una buena lectura si alguien está interesado en aprender sobre el almacenamiento en caché: Tutorial de almacenamiento en caché de Mark Nottingham

Red de entrega de contenidos

Mencionó Google Code, jQuery latest, AJAX CDN y solo quiero tocar CDN en general, incluidos aquellos por los que paga y aloja sus propios recursos, pero lo mismo se aplica si simplemente está usando el archivo cdn de jquery alojado o está cargando algo de http://cdnjs.com/ por ejemplo.

Diría que una CDN es menos importante que configurar el almacenamiento en caché del encabezado del lado del servidor, pero una CDN puede proporcionar mejoras significativas en el rendimiento, pero el rendimiento de la red de entrega de contenido variará según el proveedor .

Esto es especialmente cierto si su tráfico es una audiencia mundial y el proveedor de CDN tiene muchas ubicaciones de borde / igual en todo el mundo. También reducirá significativamente el ancho de banda de su alojamiento web y el uso de la CPU (un poco) ya que está descargando parte del trabajo a la CDN para entregar recursos.

Una CDN puede, en algunos casos más raros, causar un impacto negativo en el rendimiento si la latencia de la CDN termina siendo más lenta que su servidor. Además, si optimiza en exceso y emplea demasiada parallelization de recursos (utilizando subdominios múltiples como cdn1, cdn2, cdn3, etc.) es posible terminar ralentizando la experiencia del usuario y causar sobrecarga con búsquedas de DNS adicionales. Aquí se necesita un buen equilibrio.

Otro impacto negativo que puede ocurrir es que el CDN esté caído. Ha sucedido, y volverá a suceder. Esto es más cierto con CDN gratis. Si el CDN se cae por cualquier razón, también lo hace su sitio. Es otro posible punto único de falla (SPOF) . Para los recursos de javascript, puede obtener inteligente y cargar el recurso desde el CDN y, en caso de que falle, en cualquier caso, detectar y cargar una copia local. Aquí hay un ejemplo de cómo cargar jQuery desde ajax.googleapis.com con un respaldo (tomado de HTML5 Boilerplate):

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script>window.jQuery || document.write(''<script src="js/vendor/jquery-1.8.2.min.js"><//script>'')</script>

Además de los obvios recursos de API gratuitos (jquery, google api, etc.) si está utilizando un CDN, es posible que deba pagar una tarifa por el uso, por lo que se agregará a los costos de alojamiento. Por supuesto, para algunos CDN, incluso tiene que pagar extra para obtener acceso a ciertas ubicaciones, por ejemplo, los nodos asiáticos pueden tener un costo adicional que los de América del Norte.


Para aplicaciones públicas, vaya para CDN. El almacenamiento en caché ayuda a las solicitudes repetidas, pero no a la primera solicitud. Para garantizar una carga rápida en la primera visita, use un CDN, lo más probable es que el archivo ya esté en caché en otro sitio. Como ya se ha mencionado, los resultados de CDN también se almacenan en caché.

Sin embargo, si tiene un sitio web de intranet, es posible que desee alojar los archivos usted mismo, ya que normalmente se cargan más rápido desde una fuente interna que desde un CDN. Luego, también tiene la opción de combinar varios archivos en uno para reducir el número de solicitudes.


Por encima de las citas de los expertos, la explicación es perfecta para entender la tecnología CDN y también la memoria caché. Simplemente proporcionaría mi experiencia personal. Trabajé en el sitio joomla virtuemart y, lamentablemente, no permitirá la actualización de la nueva versión de joomla y virtuemart porque estaba demasiado personalizada. campos en las páginas de productos, por lo que una vez el visitante hasta 900 / DÍA y muchos usuarios no pudieron poner sus artículos en su cesta porque cada vez que se llama a los lotes llamados js y ajax para los artículos de pedido lleva demasiado tiempo

Después de optimizar el sitio, decidimos usar CDN, luego el rendimiento es realmente bueno, junto con el registro de gtmetrix, la primera puntuación de YSlow fue del 50% y luego, después de optimizar + CDN, se pasa al 74%.

https://gtmetrix.com/reports/www.florihana.com/jWlY35im

y desde el panel de control de CDN, puede ver qué centro de datos cuesta más y qué datos se cargan más para obtener su mejora de marketing:

Pero sí, para configurar el CDN, debe tener cuidado con el tiempo de purga y equilibrar los números del recurso CDN, ya que si se produce algún problema, debe averiguar cuál es el recurso CDN.

Espero que esto ayude


Una CDN tiene la ventaja de proporcionar múltiples servidores y enrutar automáticamente su tráfico a la ubicación más cercana a su cliente. Esto puede resultar en una entrega más rápida, optimizada por ubicación.

Además, el contenido estático no requiere servidores de aplicaciones especiales (como el contenido dinámico), por lo que poder descargarlo en un CDN significa que reduce el tráfico por completo. Un clip de video puede ser demasiado grande para el caché o no debe almacenarse en caché. Pero no necesariamente es necesario soportar ese ancho de banda. Un CDN tomará ese tráfico por ti.

No siempre se trata del caché. Es posible que un pequeño servidor web de aplicaciones solo desee proporcionar el contenido dinámico, pero necesita una solución para los medios de gran impacto que rara vez cambian. Los CDN manejan el problema de la escala por usted.