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 de tamaño acelera la descarga de elementos 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 playlist 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 playlists de HLS y DASH suelen ver 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 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, incluye 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 publique lo más rápido posible, ya que la longitud del contenido completo es desconocida 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 respuestas posteriores y establecer el valor en la longitud del contenido del cuerpo comprimido.Establece
Accept-Ranges
ennone
. Esto informa a los clientes que se ignoran las solicitudes de rango para este recurso.Debilita los encabezados de respuesta
ETag
fuertes, como lo requiere la sección 8.8.3 de la 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.La CDN de Media elige el mejor algoritmo de compresión en función de la proporción de compresión anticipada de la respuesta y la velocidad de compresión o la capacidad de procesamiento.
La compresión Brotli se usa 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 se comprimen solo 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 descompresión dinámica
Puedes habilitar la compresión dinámica en las rutas que entregan solicitudes.
Antes de comenzar
Puedes hacer lo siguiente:
Identifica o crea un origen de Media CDN con contenido comprimible listo para entregar.
Identifica o crea un servicio de Media CDN con al menos una regla de enrutamiento.
Habilita la compresión dinámica para una regla de ruta
De forma predeterminada, el modo de compresión de una regla de ruta está inhabilitado.
Si estableces el modo en automático, se habilita la compresión dinámica para cada respuesta que cumpla con los requisitos. 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 enrutamiento, haz clic en Configuraciones avanzadas.
Opcional: En Route action, agrega un elemento CDN policy.
Una política de CDN permite que Media CDN comprima el contenido una vez y lo entregue 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 la configuración de la CDN de Media 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
: Es el nombre de tu archivo YAML.
En la definición de ruta del archivo YAML, en
routeAction
, establececompressionMode
comoAUTOMATIC
, 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
Tu configuración se propagará en breve a todas las ubicaciones perimetrales.
Cuando se habilita la compresión dinámica para una ruta y la nueva configuración se aplica en las máquinas de producción, Media CDN comienza a comprimir las respuestas aptas, incluso si existen versiones sin comprimir almacenadas en caché. Mientras la CDN de Media recupera y comprime contenido nuevo, es posible que haya un aumento temporal en el tráfico a tu origen.
Inhabilita 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 enrutamiento, 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 la configuración de la CDN de Media 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
: Es el nombre de tu archivo YAML.
En la definición de ruta del archivo YAML, establece
compressionMode
enDISABLED
.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 de una ruta específica, como problemas de compatibilidad con ciertos clientes (por ejemplo, smart TVs o dispositivos de transmisión), inhabilita la compresión dinámica para evitar que la CDN de Media publique contenido comprimido en esa ruta.
Si inhabilitas la compresión dinámica para una ruta, Media CDN deja de entregar contenido comprimido desde la caché. Todas las respuestas comprimidas almacenadas en caché previamente dejan de ser válidas, y la CDN recupera 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 presionó la respuesta. Por lo tanto, la CDN de contenido multimedia no debe realizar ninguna compresión dinámica adicional. La respuesta es menor que 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 mayor que 1 MiB.
Media CDN comprime las respuestas hasta el tamaño permitido para almacenar en caché objetos sin almacenamiento en caché de rango 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 la compresión dinámica, ya que 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 la capacidad de procesamiento de 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 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 de transferencia de datos de Internet o de caché saliente 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 mensuales de transferencia de datos salientes y un mayor rendimiento para los usuarios finales.