La compresión dinámica comprime automáticamente las respuestas que sirve 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 habituales.
La reducción del tamaño acelera la descarga de recursos importantes, como hojas de estilo (CSS), secuencias de comandos (JavaScript) y manifiestos de vídeo (HLS o DASH), lo que puede reducir significativamente los tiempos de carga de las páginas y de inicio de los vídeos.
Las listas de reproducción de vídeo en directo grandes (manifiestos) tienen una cantidad significativa de datos y solicitudes repetidos, incluidos el host y el prefijo de ruta de cada segmento, así como los metadatos de la lista de reproducción HLS o DASH. Cuanto más rápido se cargue la lista de reproducción o se descarguen las actualizaciones de la lista de reproducción, menos tiempo tendrá que esperar un cliente para analizar y empezar a descargar los segmentos de vídeo a los que se hace referencia. Las listas de reproducción HLS y DASH suelen reducir su tamaño total en más de un 90%.
Para obtener más información sobre las ventajas de comprimir las respuestas, consulta la guía Aspectos básicos de la Web.
Cómo funciona la compresión dinámica
Cuando la compresión dinámica está habilitada, el contenido comprimible
que se sirve 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 añade un encabezado Vary: Accept-Encoding
a todas las respuestas aptas para la compresión. Para obtener más información, consulta Contenido incompresible.
Además, si el encabezado Accept-Encoding
de la solicitud indica una preferencia por el contenido comprimido especificando br
o gzip
(y, opcionalmente, incluyendo un parámetro q
distinto de cero), Media CDN hace lo siguiente:
Elimina el encabezado
Content-Length
de la respuesta. Esto es necesario para que la respuesta se sirva lo antes posible, ya que la longitud completa del contenido se desconoce hasta que se haya comprimido toda la respuesta. En HTTP/1.1 y versiones anteriores, Media CDN usaTransfer-Encoding: chunked
en la respuesta cuando no usaContent-Length
.Una vez que se ha comprimido y almacenado en caché una respuesta, Media CDN puede incluir el encabezado
Content-Length
en las respuestas posteriores y asignar el valor a la longitud del contenido del cuerpo comprimido.Asigna el valor
none
aAccept-Ranges
. Informa a los clientes de que se ignoran las solicitudes de intervalo de este recurso.Debilita los encabezados de respuesta
ETag
según lo estipulado en la sección 8.8.3 de la RFC 9110. Por ejemplo,ETag: "xyzzy"
se sustituye porETag: W/"xyzzy"
.Asigna el valor
br
ogzip
al encabezadoContent-Encoding
, que indica el algoritmo de compresión elegido.Media CDN elige el mejor algoritmo de compresión en función de la relación de compresión prevista de la respuesta y de la velocidad o el rendimiento de la compresión.
La compresión Brotli se usa si el cliente la admite, aunque otros algoritmos de compresión tengan valores de
q
más altos en el encabezadoAccept-Encoding
.Los manifiestos 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 coste de CPU en el cliente. Los niveles de compresión más altos no siempre mejoran el rendimiento, sobre todo en dispositivos móviles con menos potencia.
Configurar la compresión dinámica
Puedes habilitar la compresión dinámica en las rutas que sirven solicitudes.
Antes de empezar
Sigue estos pasos:
Identifique o cree un origen de Media CDN con contenido comprimible que esté listo para servir.
Identifique o cree un servicio de Media CDN con al menos una regla de ruta.
Habilitar la compresión dinámica en una regla de ruta
De forma predeterminada, el modo de compresión de una regla de ruta está inhabilitado.
Si se selecciona el modo automático, se habilita la compresión dinámica para todas las respuestas aptas. Además, indica a Media CDN que elija automáticamente el mejor algoritmo de compresión.
Para habilitar la compresión dinámica, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página Media CDN.
Para abrir la página Detalles del servicio en el que quiere configurar una regla de ruta, haga clic en el nombre del servicio.
Para cambiar al modo de edición, haz clic en el botón Editar.
Para ir a la sección Enrutamiento, haz clic en Siguiente.
Para editar una regla de host, haz clic en la flecha para desplegarla.
Para editar una regla de ruta, haz clic en
Editar en la fila correspondiente.En el panel Editar regla de ruta, haga clic en Configuraciones avanzadas.
Opcional: En Acción de ruta, añade un elemento Política de CDN.
Una política de CDN permite a Media CDN comprimir el contenido una vez y servirlo varias veces, lo que ahorra ancho de banda y acelera la entrega.
En la sección Compresión dinámica, seleccione 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 Media CDN a un archivo YAML. Usa el comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Haz los cambios siguientes:
SERVICE_NAME
: el nombre de tu servicioFILENAME
: el nombre del archivo YAML
En la definición de la ruta del archivo YAML, en
routeAction
, asigna el valorAUTOMATIC
acompressionMode
, tal 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 Media CDN desde el archivo YAML. Usa el comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Terraform
El siguiente fragmento de Terraform muestra una regla de ruta con la compresión dinámica habilitada.
Tu configuración se propagará en breve a todas las ubicaciones perimetrales.
Cuando la compresión dinámica está habilitada en una ruta y la nueva configuración se aplica en las máquinas de producción, Media CDN empieza a comprimir las respuestas aptas, aunque haya versiones en caché sin comprimir. Mientras Media CDN obtiene y comprime contenido nuevo, puede producirse un aumento temporal del tráfico a tu origen.
Inhabilitar la compresión dinámica en una regla de ruta
Para inhabilitar la compresión dinámica, siga estos pasos:
Consola
En la Google Cloud consola, ve a la página Media CDN.
Para abrir la página Detalles del servicio en el que quiere configurar la regla de ruta, haga clic en el nombre del servicio.
Para cambiar al modo de edición, haz clic en el botón Editar.
Para ir a la sección Enrutamiento, haz clic en Siguiente.
Para editar una regla de host, haz clic en la flecha para desplegarla.
Para editar una regla de ruta, haz clic en
Editar en la fila correspondiente.En el panel Editar regla de ruta, haga clic en Configuraciones avanzadas.
En la sección Compresión dinámica, desmarque 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 Media CDN a un archivo YAML. Usa el comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Haz los cambios siguientes:
SERVICE_NAME
: el nombre de tu servicioFILENAME
: el nombre del archivo YAML
En la definición de la ruta del archivo YAML, asigna el valor
compressionMode
aDISABLED
.Para actualizar el servicio, importa tu configuración de Media CDN 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 en una ruta específica, como problemas de compatibilidad con determinados clientes (por ejemplo, smart TVs o dispositivos de streaming), inhabilita la compresión dinámica para evitar que Media CDN sirva contenido comprimido en esa ruta.
Si se inhabilita la compresión dinámica de una ruta, Media CDN dejará de servir contenido comprimido desde la caché. Todas las respuestas comprimidas almacenadas en caché anteriormente dejan de ser válidas y la CDN obtiene versiones sin comprimir de tu origen.
Tipos de contenido comprimible
La compresión dinámica se aplica a los siguientes tipos MIME, en función del encabezado de respuesta HTTP Content-Type
. Las respuestas que no tienen un encabezado Content-Type
no se comprimen.
Entre los tipos de contenido habituales y sus tipos MIME se incluyen los siguientes:
- Contenido HTML:
text/html
- Hojas de estilo:
text/css
- JavaScript:
application/javascript
- JSON:
application/json
- Listas de reproducción HLS:
application/x-mpegURL
oapplication/vnd.apple.mpegURL
- Archivos de manifiesto de DASH:
application/dash+xml
En la siguiente tabla se resume cómo afecta el tipo MIME a la compresibilidad.
Tipos de MIME comprimibles | |
---|---|
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 |
Concordancia de patrones | application/*+json application/*+xml application/*mpegURL text/* |
Los formatos de imagen y vídeo (como image/jpeg
, image/png
y video/mpeg4
) casi siempre ya están comprimidos. Por lo tanto, Media CDN no los comprime. Volver a comprimir una respuesta que ya está comprimida rara vez reduce el tamaño del archivo, y los clientes pueden mostrar un comportamiento inesperado al recibir una respuesta de este tipo.
Respuestas incompresibles
Media CDN no comprime una respuesta que tenga una o varias 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 ha comprimido la respuesta. Por lo tanto, Media CDN no debe realizar ninguna compresión dinámica adicional. La respuesta es inferior a 1 KiB.
El tiempo dedicado a comprimir y descomprimir suele compensar cualquier ventaja. También hay menos contenido que comprimir, lo que puede reducir la eficacia de la compresión y dar lugar a una relación de compresión más baja.
La respuesta es superior a 1 MiB.
Media CDN comprime las respuestas hasta el tamaño permitido para los objetos de almacenamiento en caché sin almacenamiento en caché por intervalo 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.
Almacenamiento de registros y monitorización
Cuando la compresión está habilitada, la métrica https/response_bytes_count
de edgecache.googleapis.com/EdgeCacheRouteRule
informa del tamaño de la respuesta
comprimida. Es de esperar que se produzca una disminución en el total de bytes de respuesta y en el rendimiento de la transferencia de datos saliente para el contenido comprimible.
Los registros de Media CDN incluyen un campo compressionAlgorithmApplied
en jsonPayload
, que indica si el balanceador de carga ha comprimido la respuesta, así como 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 correspondientes por transferencia de datos de Internet o de caché de salida se basan en los bytes comprimidos finales que se envían al cliente.
Si sirves una gran cantidad de respuestas comprimibles, esto puede reducir las tarifas mensuales de transferencia de datos salientes, así como aumentar el rendimiento para los usuarios finales.