La compresión dinámica comprime automáticamente las respuestas que entrega Media CDN. El tamaño de los datos enviados a través de la red se reduce entre un 60% y un 85% en los casos comunes.
La reducción del tamaño acelera la descarga de recursos importantes, como hojas de estilo (CSS), secuencias de comandos (JavaScript) y manifiestos de video (HLS/DASH), lo que puede reducir significativamente la carga de la página y los tiempos de inicio del video.
Las listas de reproducción de video en vivo grandes (manifiestos) tienen una cantidad significativa de datos y recuperaciones repetidos, incluido el prefijo de ruta y host de cada segmento, así como los metadatos de la lista de reproducción de HLS o DASH. Cuanto más rápido cargue la playlist o se descarguen las actualizaciones de la playlist, menos tiempo esperará un cliente para analizar y comenzar a descargar los segmentos de video a los que se hace referencia. Las listas de reproducción de HLS y DASH suelen experimentar una reducción de su tamaño total de más del 90%.
Para obtener más información sobre los beneficios de comprimir respuestas, consulta la guía de Fundamentos de la Web.
Cómo funciona la compresión dinámica
Cuando la compresión dinámica está habilitada, el contenido comprimible que se entrega desde el origen se puede comprimir antes de entregarse si el cliente acepta uno de los algoritmos de compresión admitidos (br
o gzip
).
Media CDN agrega un encabezado Vary: Accept-Encoding
a todas las respuestas aptas para la compresión. Para obtener información relacionada, consulta Contenido no comprimible.
Además, si el encabezado Accept-Encoding
de la solicitud indica una preferencia por el contenido comprimido especificando br
o gzip
(y, de manera opcional, incluyendo un parámetro q
distinto de cero), Media CDN hace lo siguiente:
Quita el encabezado
Content-Length
de la respuesta. Esto es necesario para permitir que la respuesta se entregue lo más rápido posible, ya que la longitud completa del contenido se desconoce hasta que se comprime toda la respuesta. Para HTTP/1.1 y versiones anteriores, Media CDN usaTransfer-Encoding: chunked
en la respuesta cuando no usaContent-Length
.Después de que se comprime y almacena en caché una respuesta, Media CDN puede incluir el encabezado
Content-Length
en las respuestas posteriores y establecer el valor en la longitud del contenido del cuerpo comprimido.Establece
Accept-Ranges
ennone
. Informa a los clientes que se ignoran las solicitudes de rango para este recurso.Debilita cualquier encabezado de respuesta
ETag
sólido, como lo requiere la sección 8.8.3 de RFC 9110. Por ejemplo,ETag: "xyzzy"
se reemplaza porETag: W/"xyzzy"
.Establece el encabezado
Content-Encoding
enbr
ogzip
, lo que indica el algoritmo de compresión elegido.Media CDN elige el mejor algoritmo de compresión según la proporción de compresión prevista de la respuesta y la velocidad o capacidad de procesamiento de la compresión.
Se usa la compresión Brotli si el cliente la admite, incluso si otros algoritmos de compresión tienen valores de
q
más altos en el encabezadoAccept-Encoding
.Los manifiestos de HLS solo se comprimen con
gzip
.
Media CDN determina el nivel de compresión para equilibrar el tamaño total de la descarga y el costo de CPU en el cliente. Los niveles de compresión más altos no siempre benefician el rendimiento, en especial en dispositivos móviles de menor potencia.
Cómo configurar la compresión dinámica
Puedes habilitar la compresión dinámica en las rutas que atienden solicitudes.
Antes de comenzar
Haz lo siguiente:
Identifica o crea un origen de Media CDN con contenido comprimible que esté listo para publicarse.
Identifica o crea un servicio de Media CDN con al menos una regla de ruta.
Habilita la compresión dinámica para una regla de ruta
De forma predeterminada, el modo de compresión para una regla de ruta está inhabilitado.
Si configuras el modo como automático, se habilita la compresión dinámica para cada respuesta apta. Además, le indica a Media CDN que elija automáticamente el mejor algoritmo de compresión.
Para habilitar la compresión dinámica, haz lo siguiente:
Console
En la consola de Google Cloud , ve a la página Media CDN.
Para abrir la página Detalles del servicio para el que deseas configurar una regla de ruta, haz clic en el nombre del servicio.
Para cambiar al modo de edición, haz clic en el botón Editar.
Para navegar a la sección Enrutamiento, haz clic en Siguiente.
Para editar una regla de host, haz clic en la flecha para expandirla.
Para editar una regla de ruta, haz clic en
Editar en la fila correspondiente.En el panel Editar regla de ruta, haz clic en Configuraciones avanzadas.
Opcional: En Route action, agrega un elemento de política de CDN.
Una política de CDN permite que Media CDN comprima el contenido una vez y lo publique varias veces, lo que ahorra ancho de banda y acelera la entrega.
En la sección Compresión dinámica, selecciona Habilitar compresión.
Para guardar la regla de ruta, haz clic en Guardar.
Para guardar los cambios en el servicio, haz clic en Actualizar servicio.
gcloud y YAML
Exporta tu configuración de CDN de medios a un archivo YAML. Usa el comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Reemplaza lo siguiente:
SERVICE_NAME
: el nombre de tu servicio.FILENAME
: El nombre de tu archivo YAML
En la definición de ruta del archivo YAML, en
routeAction
, establececompressionMode
enAUTOMATIC
, como se muestra en el siguiente ejemplo:routing: hostRules: - hosts: - media.example.com pathMatcher: routes pathMatchers: - name: routes routeRules: - priority: 2 origin: origin1 matchRules: - pathTemplateMatch: "/**.m3u8" # HLS playlists - pathTemplateMatch: "/**.mpd" # DASH manifests routeAction: cdnPolicy: defaultTtl: 5s compressionMode: AUTOMATIC
Para actualizar el servicio, importa tu configuración de CDN de Media desde el archivo YAML. Usa el comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
En el siguiente fragmento de Terraform, se muestra una regla de ruta con compresión dinámica habilitada.
En breve, tu configuración se propagará a todas las ubicaciones perimetrales.
Cuando se habilita la compresión dinámica para una ruta y la nueva configuración entra en vigencia en las máquinas de producción, Media CDN comienza a comprimir las respuestas aptas, incluso si existen versiones almacenadas en caché sin comprimir. Mientras la CDN de medios recupera y comprime contenido nuevo, es posible que se produzca un aumento temporal en el tráfico hacia tu origen.
Cómo inhabilitar la compresión dinámica para una regla de ruta
Para inhabilitar la compresión dinámica, haz lo siguiente:
Console
En la consola de Google Cloud , ve a la página Media CDN.
Para abrir la página Detalles del servicio para el que deseas configurar la regla de ruta, haz clic en el nombre del servicio.
Para cambiar al modo de edición, haz clic en el botón Editar.
Para navegar a la sección Enrutamiento, haz clic en Siguiente.
Para editar una regla de host, haz clic en la flecha para expandirla.
Para editar una regla de ruta, haz clic en
Editar en la fila correspondiente.En el panel Editar regla de ruta, haz clic en Configuraciones avanzadas.
En la sección Compresión dinámica, anula la selección de Habilitar compresión.
Para guardar la regla de ruta, haz clic en Guardar.
Para guardar los cambios en el servicio, haz clic en Actualizar servicio.
gcloud y YAML
Exporta tu configuración de CDN de medios a un archivo YAML. Usa el comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Reemplaza lo siguiente:
SERVICE_NAME
: el nombre de tu servicio.FILENAME
: El nombre de tu archivo YAML
En la definición de ruta del archivo YAML, configura
compressionMode
comoDISABLED
.Para actualizar el servicio, importa tu configuración de CDN de Media desde el archivo YAML. Usa el comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Si tienes problemas con la compresión dinámica para una ruta específica, como problemas de compatibilidad con ciertos clientes (por ejemplo, TVs inteligentes o dispositivos de transmisión), inhabilita la compresión dinámica para evitar que Media CDN entregue contenido comprimido en esa ruta.
Si inhabilitas la compresión dinámica para una ruta, Media CDN dejará de entregar contenido comprimido desde la caché. Todas las respuestas comprimidas almacenadas en caché anteriormente dejan de ser válidas, y la CDN recupera las versiones sin comprimir de tu origen.
Tipos de contenido que se pueden comprimir
La compresión dinámica se aplica a los siguientes tipos de MIME, en función del encabezado de respuesta HTTP Content-Type
. Las respuestas que no tienen un encabezado Content-Type
no están comprimidas.
Los tipos de contenido comunes y sus tipos de MIME incluyen lo siguiente:
- Contenido HTML:
text/html
- Hojas de estilo:
text/css
- JavaScript:
application/javascript
- JSON:
application/json
- Listas de reproducción de HLS:
application/x-mpegURL
oapplication/vnd.apple.mpegURL
- Manifiestos de DASH:
application/dash+xml
La siguiente tabla resume cómo el tipo de MIME afecta la capacidad de compresión.
Tipos de MIME que se pueden comprimir | |
---|---|
Concordancia exacta |
application/csv application/javascript application/json application/json+protobuf application/signed-exchange application/wasm application/x-javascript application/x-nacl application/x-plist application/x-pnacl application/x-protobuf application/x-protobuffer application/x-sdch-dictionary application/xml audio/mpegURL font/eot font/otf font/ttf image/pwg-raster image/svg+xml image/vnd.microsoft.icon image/x-icon video/vnd.mpeg.dash.mpd |
Coincidencia del patrón | application/*+json application/*+xml application/*mpegURL text/* |
Los formatos de imagen y video (como image/jpeg
, image/png
y video/mpeg4
) casi siempre están comprimidos. Por lo tanto, Media CDN no los comprime. Volver a comprimir una respuesta ya comprimida rara vez reduce el tamaño del archivo, y los clientes pueden presentar un comportamiento inesperado cuando reciben una respuesta de este tipo.
Respuestas no comprimibles
Media CDN no comprime una respuesta que tiene una o más de las siguientes características:
- La respuesta no tiene un encabezado
Content-Type
que coincida con un tipo de contenido comprimible. - La respuesta no tiene un encabezado
Content-Length
. - La respuesta tiene un encabezado
Content-Encoding
. Esto implica que el origen ya comprimió la respuesta. Por lo tanto, la CDN de Media no debe realizar ninguna compresión dinámica adicional. La respuesta pesa menos de 1 KiB.
El tiempo dedicado a comprimir y descomprimir a menudo compensa cualquier beneficio. También hay menos contenido para comprimir, lo que puede reducir la efectividad de la compresión y producir una proporción de compresión más baja.
La respuesta es más grande que 1 MiB.
Media CDN comprime las respuestas hasta el tamaño permitido para almacenar en caché objetos sin almacenamiento en caché de rangos de bytes.
La respuesta tiene un encabezado
Cache-Control: no-transform
.La respuesta tiene un encabezado
Vary: Accept-Encoding
, lo que implica que no se requiere compresión dinámica porque el origen puede comprimir la respuesta.
Registro y supervisión
Cuando la compresión está habilitada, la métrica https/response_bytes_count
existente en edgecache.googleapis.com/EdgeCacheRouteRule
informa el tamaño de la respuesta comprimida. Puedes esperar una disminución en los bytes totales de respuesta y en la capacidad de procesamiento de transferencia de datos salientes para el contenido comprimible.
Los registros de Media CDN incluyen un campo compressionAlgorithmApplied
en jsonPayload
, que indica si el balanceador de cargas comprimió la respuesta, junto con el tipo de compresión.
{ insertId: "1c02hw9g3gjay67" jsonPayload: { @type: "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", cacheId: "IAD-862d661f", cacheStatus": "hit,stale", compressionAlgorithmApplied: "br" }, }
Facturación
Cuando Media CDN comprime una respuesta, los cargos relevantes por transferencia de datos de caché o de Internet salientes se basan en los bytes comprimidos finales que se envían al cliente.
Si entregas una gran cantidad de respuestas que se pueden comprimir, esto puede generar una reducción en tus tarifas de transferencia de datos salientes mensuales y un mayor rendimiento para los usuarios finales.