¿Para qué es útil un TTL 0 en CloudFront?


Hace unas semanas Amazon anunció que ha reducido el periodo de caducidad del contenido:

Amazon CloudFront Reduce El Período Mínimo de Caducidad del Contenido

Tanto que puede establecer ahora TTL en CloudFront a 0. Así que mi pregunta es, ¿por qué podría ser útil tener una distribución de CloudFront con TTL establecido en 0. Para mí, esto significa que no hay almacenamiento en caché, por lo que cada solicitud que llegue a CloudFront terminará llegando al origen.

¿Qué me estoy perdiendo?

Author: Steffen Opel, 2012-05-16

3 answers

Esta nueva característica de Amazon CloudFront es realmente extremadamente útil para muchos casos de uso, porque golpear el origen funciona un poco diferente de lo que parece a primera vista y no es necesariamente un problema, al contrario; mientras que esta característica ya se ha lanzado anteriormente, todo viene junto con la reciente versión de Amazon CloudFront-Soporte para Contenido dinámico , por ejemplo, para la pregunta en cuestión:

Tiempo De Vida Variable (TTL) - En muchos casos, el contenido dinámico es no cacheable o cacheable por un período muy corto de tiempo, tal vez sólo unos segundos. En el pasado, el TTL mínimo de CloudFront era de 60 minutos desde que todo el contenido se consideró estático. El nuevo TTL mínimo el valor es 0 segundos. Si establece el TTL para un origen particular en 0, CloudFront seguirá almacenando en caché el contenido de ese origen. entonces hacer una solicitud GET con un encabezado If-Modified-Since , dando el origen una oportunidad de señal de que CloudFront puede continuar utilizando el contenido en caché si no ha cambiado en el origen . [énfasis mío]

En otras palabras, usar un TTL de 0 significa principalmente, que CloudFront delega la autoridad para el control de caché al origen, es decir, el servidor de origen decide si o no, y si durante cuánto tiempo CloudFront almacena en caché los objetos; tenga en cuenta específicamente, que una solicitud GET con un encabezado If-Modified-Since no necesariamente significa que el objeto en sí se recupera del origen, más bien el origen puede (y debe) devolver el código de estado HTTP 304 - No modificado cuando corresponda:

Indica que el recurso no ha sido modificado desde la última solicitud. [...] Usar esto ahorra ancho de banda y reprocesamiento tanto en el servidor como en cliente, ya que solo se deben enviar y recibir los datos del encabezado en comparación con la totalidad de la página que está siendo re-procesada por el servidor, entonces enviado de nuevo utilizando más ancho de banda del servidor y el cliente. [énfasis mío]

Vea el excelente Tutorial de almacenamiento en caché de Mark Nottingham para detalles sobre la mecánica y los beneficios del control de caché HTTP, una parte realmente importante y efectiva de la arquitectura HTTP.

Comprender cómo funcionan todas estas partes juntas puede ser un poco difícil, por lo tanto, la tabla de la sección Especifica el Tiempo Mínimo que CloudFront almacena en caché los objetos para su Descarga Distributions dentro de Que especifica Cuánto Tiempo permanecen los objetos en una Caché de Borde de CloudFront (Caducidad de objeto) intenta resumir los efectos cuando se aplican en el contexto de CloudFront con o sin TTL = 0 específicamente.

 129
Author: Steffen Opel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-22 23:06:29

Tenga en cuenta que Amazon no está diciendo "TTL es 0", está diciendo "TTL mínimo es 0". y eso es muy diferente. La descripción anterior es muy deseable, pero no hay garantía de que Cloudfront realmente lo haga.

En mis experiencias en este momento, puedo ver una imagen en caché permanecer durante unos minutos en el borde mientras mi origen ya ha cambiado.

Por lo tanto, creo que decir "TTL mínimo es 0" es probablemente más como "Amazon no tiene la intención estricta de mantener esto en un caché", y tal vez " y se refetch a menudo".

Para aplicaciones como CMSs, donde el usuario web está publicando nuevo contenido, creo que TTL-0 todavía no es suficiente. Todavía tiene que invocar invalidaciones desde el CMS o emplear diferentes rutas para diferentes números de versión.

 3
Author: polx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-26 21:23:48

CloudFront se puede usar en combinación con certificate manager para agregar compatibilidad con HTTPS a los sitios web de S3. Es posible que desee esto, pero cero almacenamiento en caché.

 0
Author: nathan-cloudright.co.uk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-26 14:42:18