Evita trabajo de compresión duplicado
Elige una única capa para comprimir una respuesta determinada. POM Cache suministra el cuerpo canónico; o bien el servidor de origen o bien el CDN debe ser responsable de su codificación de transferencia.
«Ambas funciones de compresión están activadas» no es automáticamente incorrecto, pero su interacción debe ser intencional y observable.
Modelo A: CloudFront es responsable de la compresión
Este es el patrón estándar de POM:
POM Cache index.html
→ origin sends identity body
→ CloudFront selects Brotli/Gzip
→ viewer decodes it
El origen no envía Content-Encoding. CloudFront utiliza el Accept-Encoding normalizado del visitante, las comprobaciones de elegibilidad y la política de caché.
Ventajas:
- sin CPU de compresión en PHP ni Apache;
- un único archivo de origen canónico;
- las variantes de borde se crean cerca de los visitantes;
- la purga de POM Cache se mantiene independiente del formato.
Modelo B: el origen es responsable de la compresión
Un servidor de origen puede aplicar Brotli o Gzip:
POM Cache index.html
→ Apache compresses response
→ origin sends correct Content-Encoding
→ CloudFront passes and caches it
CloudFront no vuelve a comprimir una respuesta que ya tiene Content-Encoding. El origen debe negociar correctamente, enviar la cabecera correspondiente y mantener aisladas las variantes de Accept-Encoding.
Este modelo puede ser útil sin CloudFront o para los tipos que el CDN no comprime.
Encuentra al responsable actual
Solicita directamente al origen a través de la ruta de diagnóstico aprobada con:
Accept-Encoding: br,gzip
Si la respuesta del origen ya tiene Content-Encoding, la compresión del origen está activa. Los posibles responsables incluyen:
- filtros de salida Brotli/Deflate de Apache;
- otro proxy inverso;
zlib.output_compressionde PHP;- un plugin de optimización;
- una función de hosting gestionado.
Después solicita a través del CDN y compara. No deduzcas la responsabilidad únicamente a partir de la respuesta pública.
Patrones de fallo
Trabajo de CPU sin beneficio añadido
El origen comprime cada fallo de caché mientras que la arquitectura pretendía que CloudFront lo hiciera.
Content-Encoding incorrecto
La cabecera indica Brotli/Gzip pero el cuerpo es identidad, o el cuerpo está codificado dos veces. Los navegadores pueden informar de fallos de decodificación o de contenido truncado.
Desajuste de la clave de caché
Una respuesta codificada se reutiliza para un cliente que no anunció compatibilidad.
Objeto de identidad antiguo
CloudFront se configuró para la compresión después de que el objeto se almacenara en caché y sigue sirviendo la copia anterior sin comprimir.
Reglas de cabecera en conflicto
Varias capas sobrescriben o duplican Content-Encoding o Vary.
Pasa a un único responsable
Para estandarizar en CloudFront:
- confirma que la compresión de borde y su política de caché están listas;
- desactiva la compresión del origen para el comportamiento seleccionado;
- verifica que el origen devuelve identidad con el
Content-Lengthcorrecto; - invalida las rutas de borde controladas;
- prueba con visitantes de Brotli, Gzip e identidad.
Para estandarizar en el origen:
- configura la negociación del servidor y
Vary: Accept-Encoding; - verifica los bytes codificados y las cabeceras antes del CDN;
- asegúrate de que el CDN almacena en caché correctamente las variantes de codificación;
- comprende que CloudFront dejará pasar la codificación del origen;
- invalida las variantes antiguas.
POM Cache permanece sin cambios
Ninguno de los dos modelos requiere archivos .br ni .gz en el árbol de POM Cache. No añadas un paso de compresión PHP a la fase dos solo porque la entrega pública deba estar comprimida.
Utiliza Verifica la entrega Brotli o Gzip después de cada cambio de responsabilidad.