Volver al blog

Síguenos y suscríbete

Optimización del rendimiento web: análisis de los valores predeterminados de compresión inteligente de Fastly

Stephen Stierer

Director sénior de preventa para Norteamérica

Anjan Srinivas

Vice President of Network Products

En el acelerado panorama digital actual, un sitio web lento es un sitio web condenado al fracaso. No se trata solo de la frustración de los usuarios, sino que también afecta al posicionamiento en los motores de búsqueda y, en última instancia, a tus resultados financieros. 

¿Y si existiera una forma sencilla, pero eficaz, de acelerar considerablemente la velocidad de tu sitio web y reducir costes al mismo tiempo?

El secreto está en la compresión de contenidos. Una optimización que a menudo se pasa por alto y que puede reducir el tamaño de la carga útil hasta en un 70 %. Mediante el uso de algoritmos como Brotli o gzip, es posible distribuir contenidos a mayor velocidad, reducir el uso de ancho de banda y ofrecer a los usuarios una experiencia más fluida y rápida. Todo ello sin cambiar ni una sola línea del diseño de tu web.

En Fastly, nos dedicamos a hacer que los sitios web de nuestros clientes sean más rápidos y la compresión de contenido es una piedra angular de este compromiso. De hecho, llevamos más de una década a la vanguardia en este campo. 

En este artículo analizaremos la configuración predeterminada de compresión de Fastly, revisaremos su eficacia basándonos en datos recientes del HTTP Archive y explicaremos cómo utilizamos estos datos para ofrecer una mejor experiencia a nuestros clientes.

Potencia tus contenidos con la compresión de Fastly

Fastly optimiza automáticamente las solicitudes para almacenar en caché las respuestas comprimidas y, de este modo, mejorar considerablemente el rendimiento. Admitimos dos algoritmos de compresión principales para los datos en el borde: Gzip y Brotli.

Fastly gestiona la compresión de contenido de varias formas:

  • Compresión en el origen: si el servidor de origen distribuye contenido ya comprimido y correctamente configurado con los encabezados Accept-Encoding y Vary, Fastly garantizará que estas respuestas comprimidas se distribuyan solo a los clientes compatibles y se reutilicen desde la caché lo máximo posible.

  • Compresión en el borde: Fastly también puede comprimir datos directamente en el borde de nuestra plataforma:

  • Compresión estática: la compresión estática se produce cuando Fastly recibe las respuestas del servidor de origen antes de almacenarlas en caché. Es muy eficiente para el contenido almacenable en caché: Fastly toma la respuesta sin comprimir, la comprime en el borde y almacena el objeto comprimido para futuras solicitudes.

La compresión estática está disponible para los servicios VCL que utilizan Gzip o Brotli. Dado que el objeto comprimido se almacena en caché y se entrega en su formato más pequeño, la facturación se basa en el tamaño comprimido distribuido al cliente. De este modo, se reducen los costes de ancho de banda y se mejora el rendimiento general. 

  • Compresión dinámica: se produce justo antes de que las respuestas se distribuyan al cliente, después del almacenamiento en caché. Es ideal cuando la compresión estática no es viable y es compatible con Edge Side Includes. Las respuestas comprimidas dinámicamente se facturan en función del tamaño sin comprimir antes de que se realice la compresión.

  • Optimización de Accept-Encoding: Fastly normaliza los valores del encabezado Accept-Encoding enviados por los clientes. Muchas variaciones de este encabezado son semánticamente equivalentes (por ejemplo, gzip, br y gzip, br, deflate). Al normalizar este encabezado, Fastly reduce el número de permutaciones de claves de caché, lo que permite reutilizar una única respuesta comprimida almacenada en caché con más usuarios, incluso cuando sus navegadores envían valores Accept-Encoding ligeramente diferentes. El resultado es una mayor eficiencia de caché y tiempos de respuesta más rápidos para los usuarios finales.

Configuración de compresión predeterminada de Fastly: un análisis en profundidad

Al incorporarte a Fastly, se habilitan de forma predeterminada ciertos ajustes de compresión. Estos valores predeterminados determinan qué tipos de contenido y extensiones de archivo comprimirá automáticamente Fastly si llegan sin comprimir desde tu servidor de origen.

Entre los tipos de contenido comprimible predeterminados de Fastly figuran:

text/html|application/x-javascript|text/css|application/javascript|text/javascript|application/json|application/vnd\.ms-fontobject|application/x-font-opentype|application/x-font-truetype|application/x-font-ttf|application/xml|font/eot|font/opentype|font/otf|image/svg\+xml|image/vnd\.microsoft\.icon|text/plain|text/xml

Las extensiones comprimibles predeterminadas son:

"\.(?:css|js|html|eot|ico|otf|ttf|json|svg)(?:$|\?)"

¿Cómo funcionan estos valores predeterminados en situaciones reales? 

Para responder a esta pregunta, recurrimos al HTTP Archive, un conjunto de datos mensual que recopila resultados de WebPageTest para aproximadamente 15 millones de URL en el conjunto de datos CrUX de Google

Para el conjunto de datos de julio de 2025, este análisis incluyó la asombrosa cifra de 25 000 millones de solicitudes en total. Este completísimo conjunto de datos permitió examinar en detalle las URL de las solicitudes, las extensiones de los archivos y los encabezados de respuesta Content-Type / Content-Encoding para evaluar la eficacia de la compresión.

Este trabajo se basa en la investigación fundamental de Steve Souders (2014), quien también aprovechó el HTTP Archive para perfeccionar y optimizar la configuración Gzip de Fastly, lo que supone la continuación de una década dedicada a mejorar el rendimiento web gracias a una compresión más inteligente.

Una evaluación de los datos de HTTP Archive para Fastly indica que la mayoría de las extensiones de archivo clasificadas como comprimibles en la configuración predeterminada de Fastly se distribuyen, en la práctica, en un formato comprimido a gran velocidad. Esta coincidencia entre la configuración y el comportamiento observado sugiere que los valores predeterminados de Fastly son, en general, eficaces para optimizar el tamaño de transferencia del contenido comprimible.

Un caso atípico notable es la extensión .ico, que presenta una tasa de compresión relativamente baja. Un análisis más detallado revela que una parte significativa de los recursos con esta extensión se sirven con el tipo de contenido image/png. Dado que PNG ya es un formato comprimido sin pérdidas, la ventaja incremental de la compresión HTTP adicional es insignificante, lo que probablemente explique su escasa adopción. La siguiente tabla detalla los tipos de contenido más frecuentes asociados a las respuestas .ico.

En el caso de los recursos con extensiones no incluidas en la lista predeterminada de Fastly, una proporción considerable se siguió sirviendo comprimida gracias a las coincidencias en el encabezado Content-Type. Por ejemplo, aunque la extensión .php no figura en la lista predeterminada, la mayoría de las respuestas .php del conjunto de datos se asociaron con tipos de contenido como application/javascript, text/css, application/json y text/html, todos ellos aptos según las reglas de compresión predeterminadas de Fastly. Los únicos tipos de contenido comprimibles que se observaron con frecuencia y que carecían de una extensión correspondiente en la lista predeterminada fueron text/vtt y text/markdown. La siguiente tabla resume los tipos de contenido más habituales proporcionados por los clientes de Fastly e indica si se ajustan a las reglas de compresión predeterminadas.

Valores predeterminados de compresión mejorados: sitios más rápidos, costes más bajos

Aunque la configuración de compresión predeterminada de Fastly ya era muy eficaz, el análisis de los datos de HTTP Archive reveló que había margen para una mejora incremental. Basándonos en estos resultados, hemos ampliado las reglas de compresión predeterminadas para aumentar aún más la cobertura y la eficiencia:

Extensiones añadidas a los valores predeterminados

  • jsonp

  • txt

  • vtt

Tipos de contenido añadidos a los valores predeterminados

  • text/* (comodín para todos los formatos basados en texto)

  • application/*json (comodín para todos los tipos de aplicación basadas en JSON)

  • aplicación/*xml (comodín para todos los tipos de aplicaciones basadas en XML)

Estas incorporaciones permiten a Fastly comprimir automáticamente un conjunto aún más amplio de contenido relevante, lo que reduce aún más el tamaño de las cargas útiles: una doble ventaja que se traduce en un rendimiento más rápido del sitio y menores costes de entrega, todo ello sin cambiar una sola línea de código.

Y no nos detendremos ahí. Nuestros equipos de ingeniería están supervisando y evaluando activamente las tecnologías de compresión emergentes, como Zstandard y Compression Dictionary Transport, para identificar dónde pueden aportar mayores ventajas en cuanto a velocidad y eficiencia. A medida que evolucione la web, también lo harán los valores predeterminados de compresión inteligente de Fastly, para que nuestros clientes sigan estando a la vanguardia del rendimiento web.

¿Tienes curiosidad por saber qué puede hacer la compresión inteligente de Fastly por tus métricas de rendimiento? Ponte en contacto con tu equipo de cuentas o comunícate con nosotros. ¡Nos encantaría mostrártelo!

Conjunto de datos de soporte

A continuación proporcionamos el SQL de BigQuery utilizado para extraer las estadísticas de compresión. La ejecución de esta consulta procesa aproximadamente 2 TB de datos (esta consulta puede superar el nivel gratuito). 

Para reducir el volumen procesado y disminuir los costes asociados a las consultas, se pueden descomentar las cláusulas de filtro «is_root_page» y «rank» para limitar aún más el conjunto de datos.

WITH request_data AS (
 SELECT
   rank, page, url,
   JSON_VALUE(payload._contentEncoding) AS encoding,
   JSON_VALUE(summary._cdn_provider) AS cdn,
   header_name.value AS content_type,
   JSON_VALUE(summary.ext) AS ext,
   JSON_VALUE(summary.type) AS type,
   JSON_VALUE(summary.respBodySize) AS size,
 FROM `httparchive.crawl.requests` ,
   UNNEST (response_headers) AS header_name
 WHERE
   date = "2025-07-01"
   --AND is_root_page = true
   --AND rank <= 1000000
   AND client= "mobile"
   AND header_name.name = "content-type"
)
SELECT
 ext,
 content_type,
 COUNTIF(encoding IN ('gzip', 'br')) AS compressed,
 COUNTIF(ext IN ('css','js','html','eot','ico','otf', 'ttf', 'json', 'svg')) AS fastly_extension_defaults,
 COUNTIF(REGEXP_CONTAINS(content_type,
'(text/html|application/x-javascript|text/css|application/javascript|text/javascript|application/json|application/vnd.ms-fontobject|application/x-font-opentype|application/x-font-truetype|application/x-font-ttf|application/xml|font/eot|font/opentype|font/otf|image/svg\\+xml|image/vnd.microsoft.icon|text/plain|text/xml)')
) AS fastly_content_types_defaults,

 COUNTIF(ext IN ('css','js','html','eot','ico','otf', 'ttf', 'json', 'svg') OR REGEXP_CONTAINS(content_type,
'(text/html|application/x-javascript|text/css|application/javascript|text/javascript|application/json|application/vnd.ms-fontobject|application/x-font-opentype|application/x-font-truetype|application/x-font-ttf|application/xml|font/eot|font/opentype|font/otf|image/svg\\+xml|image/vnd.microsoft.icon|text/plain|text/xml)')) AS fastly_default_compressible,
 COUNT(*) AS requests,
 COUNTIF(encoding IN ('gzip', 'br')) / COUNT(*) AS pct_compressed
FROM request_data
--WHERE cdn = "Fastly"
GROUP BY 1,2
HAVING COUNT(*) > 1000
ORDER BY 3 DESC