Resumen
Ageexpresa la estimación de una caché sobre los segundos desde que el servidor de origen generó o validó satisfactoriamente una respuesta; no data el recurso, el documento ni los bytes.- Cada caché combina el
Ageheredado conDate, los momentos locales de solicitud y recepción, el retraso y la residencia; al reutilizar sin validación sustituye el campo por un solocurrent_age. - La frescura se resuelve aparte, comparando la edad actual con una vida útil obtenida de directivas,
Expireso una heurística permitida. El entero no demuestra validación ni autoriza por sí mismo la reutilización.
Los mismos bytes podían tener una edad nueva
Una guía publicada hace cinco años continúa sin cambios. Esta mañana una caché preguntó condicionalmente al origen y recibió confirmación de que su copia seguía siendo válida. Si entrega el contenido dos minutos después, Age: 120 describe bien la respuesta aunque no describa la antigüedad de la guía.
El lenguaje cotidiano induce a asignar edad a la cosa. HTTP eligió como sujeto la respuesta. El URL puede identificar un recurso de larga vida; la representación puede atravesar muchas validaciones; la entrada de caché puede haberse almacenado o actualizado en otro momento. Ninguna de esas cronologías cabe en el campo.
El objetivo era decidir reutilización en una red de intermediarios independientes. Una caché necesitaba continuar el tiempo que otra ya había contado. Si cada una comenzaba desde cero, el paso por otra capa rejuvenecía artificialmente la respuesta. Si todas dependían sólo de Date, las diferencias entre relojes deformaban la medición.
HTTP/1.0 no transportaba la residencia anterior
La especificación HTTP/1.0 de 1996 incluía mecanismos de caché, fecha y expiración, pero su conjunto definido de encabezados de respuesta no contenía Age. Había datos para una decisión local, no un valor interoperable que representara lo ocurrido en cachés anteriores.
El problema se vuelve visible con dos almacenes. A guarda una respuesta ochenta segundos y la entrega a B. Si B ignora ese intervalo, concederá una vida adicional. Si resta la fecha del origen de su propio reloj, una desincronización puede aparentar tiempo negativo o excesivo.
HTTP/1.1 incorporó Age en 1997. El emisor llevaba su estimación y el siguiente nodo la ajustaba. La definición inicial distinguía de forma tajante la revalidación: después de confirmar una copia, la edad se apoyaba en el momento de esa confirmación, no necesariamente en la generación original. Nunca fue un campo de archivo.
El cálculo conservó dos perspectivas
Al recibir la respuesta, una caché dispone de un cálculo basado en el reloj del origen:
apparent_age = max(0, response_time - date_value)
El cero evita una edad negativa si el reloj remoto va adelantado. La llamada edad aparente, sin embargo, compara dos relojes que pueden no coincidir.
La segunda perspectiva hereda Age y suma el tiempo local consumido por la solicitud y la respuesta:
response_delay = response_time - request_time
corrected_age_value = age_value + response_delay
No requiere restar directamente relojes de máquinas distintas. A cambio, supone que las cachés anteriores insertaron el campo como exige HTTP/1.1 o versiones posteriores. Un equipo antiguo puede haberlo omitido.
Cuando esa compatibilidad importa, la fórmula conservadora elige el mayor resultado:
corrected_initial_age = max(apparent_age, corrected_age_value)
La especificación vigente permite usar directamente el valor corregido cuando no hay razones para esperar cachés obsoletas. El diseño no corona un reloj global: convierte observaciones parciales en una regla local repetible.
Cada almacén añadió sólo el tiempo que conocía
Después de recibir la respuesta, la caché puede dejarla almacenada unos segundos o varias horas. Esa residencia se conoce únicamente en el nodo donde ocurre:
resident_time = now - response_time
current_age = corrected_initial_age + resident_time
Cuando llega otra solicitud y no se valida, la caché genera Age y reemplaza el valor anterior por su edad actual. No conserva una lista de edades. El siguiente intermediario recibe el total, añade el retraso observado y, si almacena, su propia residencia.
El resultado acumula tiempo, no identidad. El mismo entero puede proceder de dos cachés lentas o de muchas rápidas. No revela cuántos saltos hubo, cómo se llamaban, quién custodió los bytes ni qué ruta siguieron. Es un insumo de cálculo, no una cadena de recibos.
La renuncia a esos detalles reduce coordinación. Un destinatario puede continuar sin consultar registros ajenos. Pero quien necesite explicar un incidente debe haber guardado localmente las piezas que el campo resume.
Frescura significaba comparar, no mirar el campo
Una edad de 120 segundos no dice cuánto tiempo queda ni si la respuesta ya está caducada. La vida de frescura se obtiene de otra fuente, y la regla central compara:
response_is_fresh = (freshness_lifetime > current_age)
Para una caché compartida puede dominar s-maxage; también pueden aplicarse max-age, el intervalo entre Expires y Date, o una heurística autorizada. Una edad de 120 es fresca frente a una vida de 300 y stale frente a una de 60.
Stale tampoco equivale a contenido falso, inseguro o viejo en sentido editorial. Sólo indica que falló la comparación ordinaria para reutilizar sin comprobación. La validación puede refrescar la respuesta. Algunas directivas o condiciones de desconexión admiten servir una copia stale. Una respuesta joven, por su parte, puede no ser almacenable o corresponder a otra variante.
La selección de objeto, el cálculo de edad, la duración de frescura y la autorización de reutilización son capas distintas. Mezclarlas convierte un dato útil en una política que nunca tuvo.
Revalidar no reescribía la historia
Cuando el origen confirma que una representación guardada sigue siendo válida, la caché puede conservar los mismos bytes y actualizar su base temporal. Por eso un valor bajo después de validar no prueba que el contenido cambiara. Sólo acredita, junto con el registro de validación separado, un fundamento reciente para reutilizarlo.
Age no contiene el ETag consultado, el estado recibido ni los campos actualizados. Tampoco un valor alto demuestra una caída del origen. Para esas conclusiones se necesita la transacción de validación.
La presencia del campo autoriza una inferencia más estrecha: la respuesta no es de primera mano, pues una caché la emitió a partir de un estado almacenado. El campo, por sí solo, no revela si esa caché validó con el origen durante esta petición o se apoyó en una validación anterior. La ausencia no demuestra lo contrario. Una caché vieja puede no implementar Age; otra puede incumplir; una captura puede omitir encabezados.
La saturación evitó que lo enorme pareciera pequeño
El valor es un entero no negativo en segundos. Una caché debería ignorarlo si es inválido. Cuando un delta es mayor de lo representable o una operación desborda, la convención histórica lo trata como 2147483648, o como el mayor entero positivo manejable.
Es una representación práctica de infinito, superior a 68 años. Su función consiste en impedir que un desbordamiento se convierta en un número negativo o pequeño. No certifica una residencia exactamente igual a esa duración.
El registro útil conserva la derivación
Una investigación necesita la clave y la variante seleccionadas, Date, Age, las directivas y validadores recibidos, los tiempos locales de solicitud, respuesta y decisión, cada término calculado y la regla que produjo la vida de frescura. Debe indicar además si hubo validación y si la salida fue reutilización fresca, validada, stale permitida o un fallo.
Guardar sólo el último entero borra la diferencia entre residencia heredada, tránsito, espera local y corrección por relojes. Una gráfica puede mostrar que algo cambió, pero ya no quién tomó la decisión ni con qué evidencia.
La arquitectura evitó tanto ese empobrecimiento como una autoridad temporal central. El origen aporta metadatos y validadores. Cada caché selecciona, mide, compara y asume la consecuencia. El nodo posterior repite. El campo coordina lo mínimo; no posee el objeto ni declara la verdad de su contenido.
Fuentes
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance
