Problemas con la compresión Gzip en Amazon CloudFront

Problemas con la compresión Gzip en Amazon CloudFront

Tenía una distribución de CloudFront configurada con S3 como origen.

He habilitado "Comprimir objetos automáticamente" según la guía de Amazon. Esperó a que el estado de distribución mostrara "en línea" y luego invalidó todos los archivos.

Mis encabezados de respuesta son:

Age:5
Connection:keep-alive
Content-Length:232359
Content-Type:application/javascript
Date:Sat, 03 Mar 2018 15:39:10 GMT
Last-Modified:Sat, 03 Mar 2018 15:37:32 GMT
Server:AmazonS3
Vary:Accept-Encoding
Via:1.1 4dbdc57755819d1a0ec1defc2630d677.cloudfront.net (CloudFront)
X-Amz-Cf-Id:6eHPWzOXv2J6kIvzuieoI9chtPBBvEvJFH9fb3yMwHvvcMZ4xsigCA==
X-Cache:Hit from cloudfront

Encabezados de solicitud:

Accept:*/*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-GB,en;q=0.9,en-US;q=0.8,pl;q=0.7,zh;q=0.6
Cache-Control:no-cache
Connection:keep-alive
Host:d2h5tcpn9r8alm.cloudfront.net
Pragma:no-cache
Referer:https://noru.co.uk/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36

Tiene una "longitud de contenido" y un "tipo de contenido" compatible, ¿qué me falta? Me estoy volviendo loco aquí...

Desde entonces, creé un nuevo depósito s3 y una nueva distribución siguiendo los pasos descritos anteriormente, pero eligiendo una ubicación de depósito diferente (en caso de que esto afecte de alguna manera). Aquí están las configuraciones generales de distribución:

Delivery Method Web
Cookie Logging  Off
Distribution Status Deployed
Comment -
Price Class Use All Edge Locations (Best Performance)
AWS WAF Web ACL -
State   Enabled
Alternate Domain Names (CNAMEs) -
SSL Certificate Default CloudFront Certificate (*.cloudfront.net)
Domain Name d189ud9v76clu1.cloudfront.net
Custom SSL Client Support   -
Security Policy TLSv1
Supported HTTP Versions HTTP/2, HTTP/1.1, HTTP/1.0
IPv6    Enabled
Default Root Object -
Last Modified   2018-03-03 15:46 UTC
Log Bucket

Y comportamientos: comportamientos de distribución

Todavía no puedo hacer que gzip funcione. Aquí está el nuevo archivo: http://d189ud9v76clu1.cloudfront.net/app.min.js

Respuesta1

¿Su solicitud contiene el Accept-Encoding: gzipencabezado necesario?

Sus encabezados parecen una salida curl, que no envía ese encabezado de forma predeterminada.

Puedes probar la codificación gzip con curl a través de:curl -H "Accept-Encoding: gzip" https://example.com/asset.js"

Respuesta2

Veré si puedo resumir lo que me pasó y tal vez esto ayude a alguien.

Hice la configuración inicial del S3. Configure CORS pero no se agregó Content-Length. Realicé la configuración inicial de CloudFront. No marqué Comprimir.

Todo se despliega.

Ejecute una prueba GTMetrix en el dominio y obtenga una F para gzip.

Vuelve atrás y busca en Google qué hacer para que funcione. Me doy cuenta de que necesito el encabezado Content-Length <AllowedHeader>Content-Length</AllowedHeader>y me doy cuenta de que necesito volver a CloudFront y verificar la compresión en Distribución.

Pero... también necesitas invalidar tu caché. Básicamente, todos los activos regresaban 304 (sin modificar). Por lo tanto, no obtendrá sus activos comprimidos.

Distribución, Edición, Invalidaciones, crear *y listo.

Espero eso ayude.

Respuesta3

Después de eso, pagué al servicio de asistencia técnica de AWS para que me resolviera este problema, aquí está su respuesta:

Entiendo que puede resultar frustrante no poder ver los cambios realizados en su configuración mediante las herramientas de desarrollo.

De la documentación que está en línea, confirmo que puede ser un poco confuso, por lo que haré una solicitud de comentarios para realizar algunos cambios en la documentación, en su caso son más cambios de rendimiento, si mira la parte inferior del navegador Chrome, Red. opción en Herramientas de desarrollador verá cómo el rendimiento de sus páginas se vio afectado debido a la compresión gzip.

Para ver la configuración a través del navegador, otra opción es la misma que obtendría en la salida del comando "curl", al ver los encabezados de respuesta en Herramientas de desarrollo desde cualquier navegador.

Esto se puede encontrar si va a Herramientas de desarrollo -> Seleccionar red: * Cuando vio todos los enlaces a sus recursos, haga clic en el nombre de dominio del enlace superior "noru.co.uk". * Esto abrirá sus encabezados, que darán el mismo resultado que el comando curl en el ejemplo:

Rangos de aceptación: bytes

Alt-Svc: quic=":443"; ma=2592000; v="35,37,38,39"

Control de caché: sin almacenamiento, sin caché, debe revalidar, verificación posterior = 0, verificación previa = 0

Codificación de contenido: gzip

Longitud del contenido: 3152

Tipo de contenido: texto/html; juego de caracteres = utf-8

Fecha: martes, 20 de marzo de 2018 06:37:04 GMT

Etiqueta electrónica: "7073226-1521527798;gz"

Expira: jueves, 19 de noviembre de 1981 08:52:00 GMT

Pragma: sin caché

Servidor: LiteSpeed

Variar: aceptar-codificación

X-Firefox-Spdy: h2

juego de caracteres: utf-8

x-litespeed-cache: hit, privado

x-powered-by: Craft CMS

Esto le dará la mayor parte de la información de su configuración a sus páginas web de ese dominio.

Espero que esto haya ayudado, si tiene alguna otra inquietud, no dude en contactarnos ya que con gusto le ayudaré.

información relacionada