Habilita la compresión dinámica

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 página y los tiempos de inicio del video.

Las grandes listas de reproducción de video en vivo (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 lista de reproducción o se descarguen las actualizaciones de la lista de reproducción, 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 total de tamaño 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 compatibles (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 entregue lo más rápido posible, ya que la longitud completa del contenido no se conoce hasta que se comprime toda la respuesta. Para HTTP/1.1 y versiones anteriores, Media CDN usa Transfer-Encoding: chunked en la respuesta cuando no usa Content-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 en none. Esto informa a los clientes que se ignoran las solicitudes de rango para este recurso.

  • Debilita cualquier encabezado de respuesta ETag fuerte, como lo requiere la sección 8.8.3 de RFC 9110. Por ejemplo, ETag: "xyzzy" se reemplaza por ETag: W/"xyzzy".

  • Establece el encabezado Content-Encoding en br o gzip, lo que indica el algoritmo de compresión elegido.

    Media CDN elige el mejor algoritmo de compresión en función de 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 de Brotli si el cliente la admite, incluso si otros algoritmos de compresión tienen valores q más altos en el encabezado Accept-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.

Configura la compresión dinámica

Puedes habilitar la compresión dinámica en las rutas que entregan solicitudes.

Antes de comenzar

Haz lo siguiente:

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 estableces el modo en 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

  1. En la Google Cloud consola de, ve a la páginaMedia CDN.

    Ir a Media CDN

  2. Para abrir la página Detalles del servicio para el que deseas configurar una regla de ruta, haz clic en el nombre del servicio.

  3. Para cambiar al modo de edición, haz clic en el botón Editar.

  4. Para navegar a la sección Enrutamiento, haz clic en Siguiente.

  5. Para editar una regla de host, haz clic en la flecha para expandirla.

  6. Para editar una regla de ruta, haz clic en Editar en la fila correspondiente.

  7. En el panel Editar regla de ruta, haz clic en Configuraciones avanzadas.

  8. Opcional: En Acción de ruta, agrega un elemento de política de CDN.

    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.

  9. En la sección Compresión dinámica, selecciona Habilitar compresión.

  10. Para guardar la regla de ruta, haz clic en Guardar.

  11. Para guardar los cambios en el servicio, haz clic en Actualizar servicio.

gcloud y YAML

  1. Exporta tu configuración de Media CDN a un archivo YAML. Usa el gcloud edge-cache services export comando.

    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.
  2. En la definición de ruta del archivo YAML, en routeAction, establece compressionMode en AUTOMATIC, 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
    
  3. Para actualizar el servicio, importa tu configuración de Media CDN desde el archivo YAML. Usa el gcloud edge-cache services import comando.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

Terraform

En el siguiente fragmento de Terraform, se muestra una regla de ruta con la compresión dinámica habilitada.

route_rule {
  description = "a route rule with dynamic compression, priority=2 (high)"
  priority    = 2
  match_rule {
    path_template_match = "/**.m3u8" # HLS playlists
  }
  match_rule {
    path_template_match = "/**.mpd" # DASH manifests
  }
  origin = google_network_services_edge_cache_origin.default.name
  route_action {
    cdn_policy {
      cache_mode = "FORCE_CACHE_ALL"
      client_ttl = "300s"
    }
    compression_mode = "AUTOMATIC"
  }
  header_action {
    response_header_to_add {
      header_name  = "x-cache-status"
      header_value = "{cdn_cache_status}"
    }
  }
}

Tu configuración se propaga en breve 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 Media CDN 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

  1. En la Google Cloud consola de, ve a la páginaMedia CDN.

    Ir a Media CDN

  2. Para abrir la página Detalles del servicio para el que deseas configurar la regla de ruta, haz clic en el nombre del servicio.

  3. Para cambiar al modo de edición, haz clic en el botón Editar.

  4. Para navegar a la sección Enrutamiento, haz clic en Siguiente.

  5. Para editar una regla de host, haz clic en la flecha para expandirla.

  6. Para editar una regla de ruta, haz clic en Editar en la fila correspondiente.

  7. En el panel Editar regla de ruta, haz clic en Configuraciones avanzadas.

  8. En la sección Compresión dinámica, anula la selección de Habilitar compresión.

  9. Para guardar la regla de ruta, haz clic en Guardar.

  10. Para guardar los cambios en el servicio, haz clic en Actualizar servicio.

gcloud y YAML

  1. Exporta tu configuración de Media CDN a un archivo YAML. Usa el gcloud edge-cache services export comando.

    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.
  2. En la definición de ruta del archivo YAML, establece compressionMode en DISABLED.

  3. Para actualizar el servicio, importa tu configuración de Media CDN desde el archivo YAML. Usa el gcloud edge-cache services import comando.

    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, smart TVs o dispositivos de transmisión), para evitar que Media CDN entregue contenido comprimido en esa ruta, inhabilita la compresión dinámica.

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 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 se comprimen.

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 o application/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, Media CDN 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 eficacia de la compresión y producir una proporción de compresión más baja.

  • La respuesta pesa más de 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.

Registro y supervisión

Cuando la compresión está habilitada, la métrica existente https/response_bytes_count en edgecache.googleapis.com/EdgeCacheRouteRule informa el tamaño de la respuesta comprimida. Deberías esperar una disminución en los bytes totales de respuesta y la capacidad de procesamiento de la transferencia de datos salientes para el contenido comprimible.

Los registros de Media CDN incluyen un campo compressionAlgorithmApplied en el 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 correspondientes por transferencia de datos salientes desde la caché o Internet se basan en los bytes comprimidos finales que se envían al cliente.

Si estás entregando una gran cantidad de respuestas comprimibles, esto puede reducir tus comisiones mensuales por transferencia de datos salientes y también mejorar el rendimiento para los usuarios finales.

¿Qué sigue?