Resumen

  • El RFC 3229 amplió el GET condicional: el cliente identifica instancias guardadas con If-None-Match, anuncia transformaciones aceptables en A-IM y puede recibir 226 más la receta IM en vez de otra copia completa.
  • Hay tres identidades. Delta-Base nombra la base antigua, el cuerpo lleva la diferencia y el ETag de la respuesta identifica la instancia actual reconstruida, no los bytes delta.
  • El nuevo estado también era una barrera para cachés antiguas. Ignorar un encabezado desconocido podía hacer que una diferencia se almacenara y sirviera como el recurso entero; 226 hacía visible el cambio semántico.

La validación ahorraba todo o nada

La petición condicional ya evitaba repeticiones. Si la copia almacenada seguía vigente, 304 Not Modified bastaba. Si el recurso cambiaba, aunque fuera en una línea, la respuesta común enviaba de nuevo el valor completo.

La caché funcionaba como testigo binario: reutilizable sin cambios o inútil para el transporte. El contenido sin modificar no aportaba ningún crédito a la siguiente descarga.

El RFC 3229, de enero de 2002, propuso usar la copia anterior como base. El servidor calcularía la diferencia con la instancia actual y transmitiría solo las instrucciones necesarias para recuperarla.

Era una extensión opcional, diseñada para reducir el tamaño medio sin otra ida y vuelta y convivir con implementaciones HTTP/1.0 y HTTP/1.1 que no la entendieran. No prometía que todo cambio produjera una diferencia rentable.

Una diferencia no era compresión ni rango

El RFC define instancia como el valor que devolvería un GET 200 de la variante seleccionada después del codificado de contenido, pero antes de la manipulación de instancia y del codificado de transferencia.

La compresión puede deshacerse sin una copia anterior. El delta suele requerir exactamente la base usada para calcularlo. Un rango selecciona coordenadas de una instancia actual; el delta describe el paso entre dos instancias. Ambos pueden reducir bytes, pero sus pruebas son distintas.

Tampoco es PATCH. El cuerpo 226 responde a GET y permite recuperar el estado actual en el receptor. No solicita cambiar el recurso. RFC 3229 no define este mecanismo para respuestas a otros métodos.

Separar las categorías impide que cualquier optimización incremental se trate como si tuviera la misma procedencia.

El cliente debía demostrar su punto de partida

If-None-Match enumera ETags de instancias anteriores que el cliente conserva. A-IM enumera las manipulaciones que sabe aplicar.

Si una etiqueta todavía identifica la instancia actual, el camino correcto sigue siendo 304. Si cambió, un servidor capaz puede seleccionar una base ofrecida y producir un delta compatible. Si no retuvo esa versión, no conoce el algoritmo o el cálculo no conviene, puede entregar 200.

La cabecera es una oferta, no una orden. El cliente controla qué bases posee y qué formatos decodifica. El origen controla su historial, el coste de cálculo, la base elegida y la decisión de enviar el conjunto completo.

“La diferencia” solo tiene sentido después de acordar desde qué estado y mediante qué transformación.

Un mensaje coordinaba tres objetos

La base antigua ya vive en la caché. El cuerpo 226 contiene instrucciones delta. La aplicación de esas instrucciones produce la instancia actual.

Cuando se ofrecieron varias etiquetas, Delta-Base especifica la base escogida. El ETag de la respuesta identifica el resultado reconstruido. El RFC advierte que no identifica el delta, porque la diferencia no es una instancia independiente.

Un cuerpo puede ser válido y no representar nada utilizable por sí solo. Depende de una base exacta, una receta exacta y una identidad final.

Content-Length mide el cuerpo delta transportado, no la longitud de la instancia recuperada. Confundir ambas magnitudes convierte el ahorro en una falsa representación truncada.

El orden también formaba parte de la procedencia

La secuencia conceptual selecciona recurso y variante, aplica codificado de contenido, asigna el ETag de instancia, ejecuta manipulaciones como delta o rango y finalmente aplica codificado de transferencia.

Las etapas no son intercambiables. Delta seguido de rango puede producir algo distinto de rango seguido de delta. La compresión como codificado de contenido participa en la identidad de la instancia; como manipulación posterior ocupa otro lugar.

A-IM e IM conservan el orden. Una caché no puede guardar solo nombres y reordenarlos cuando reutiliza la respuesta. Parámetros, secuencia y base forman una receta indivisible.

Los bytes ahorrados solo siguen siendo ciertos si viaja también la información que permite volver a darles forma de representación.

226 protegió frente a una compatibilidad peligrosa

Los autores eran reacios a crear otro código. El comportamiento de intermediarios antiguos lo hizo necesario.

HTTP suele indicar que los campos desconocidos se ignoren. Una caché antigua podía ignorar IM, almacenar el cuerpo delta y servirlo después a un cliente que esperaba la copia completa. La extensión compatible habría causado corrupción silenciosa al aprovechar exactamente la tolerancia del protocolo.

El código 226, desconocido para esos intermediarios, marcaba una ruptura más difícil de confundir. El RFC señala que los proxies existentes parecían reenviar estados desconocidos sin almacenarlos.

Incluso Vary: If-None-Match, A-IM era insuficiente en al menos un escenario de validación incorrecta. El cambio tenía que aparecer donde la lógica antigua no pudiera degradarlo fácilmente a un 200.

IM cuenta la receta y 226 advierte sobre el cuerpo

Una respuesta delta debe usar 226 e incluir IM con al menos el algoritmo aplicado. La petición debe haber ofrecido la manipulación en A-IM y una base mediante If-None-Match.

El estado dice que GET se cumplió usando una o más manipulaciones de la instancia actual. Según la receta, la instancia solo aparece al combinar esta respuesta con otras anteriores o futuras.

Por eso 226 no es sinónimo exclusivo de delta. El marco admite varias manipulaciones, incluidas combinaciones con rangos. IM describe la secuencia; 226 impide tratar el cuerpo como la instancia completa sin inspección.

La breve frase “IM Used” no sustituye a los campos estructurados que hacen posible reconstruir.

Una caché capaz podía convertir la respuesta

Prohibir todo almacenamiento habría perdido parte de la ventaja. RFC 3229 distingue la caché que desconoce el mecanismo de aquella capaz de respetarlo entero.

La caché capaz puede decodificar todas las manipulaciones, reconstruir la instancia y guardarla como 200. Puede dejar únicamente la selección de rango y crear una entrada 206 correcta. También puede retener el 226 bruto bajo reglas especiales.

La reutilización bruta exige que la siguiente petición acepte manipulaciones, parámetros y orden compatibles, además de mantener frescura, identidad y base. Una diferencia guardada no se vuelve una variante independiente.

La directiva Cache-Control im dibuja ese límite: no-store detiene a la caché ordinaria, mientras una implementación que comprende 226, A-IM e IM puede seguir instrucciones específicas.

Conservar el pasado tenía un precio

Solo hay diferencia útil si sobrevive una base. Un cliente puede retener varias instancias y ofrecer varias etiquetas. El servidor puede elegir la que genere un delta apropiado y declararla en Delta-Base.

Pero el espacio es finito, el historial del origen también, y comparar bases consume CPU, memoria y disco. Una sugerencia de retención no es una promesa perpetua.

La optimización altera incentivos: una copia vieja puede guardarse no para mostrarla, sino para reconstruir otra. El origen puede preservar versiones o precalcular deltas donde la economía futura justifique el coste.

La libertad de volver a 200 forma parte del control del servidor. Un delta más grande, lento o imposible no es un error; es una optimización descartada.

Los registros actuales conservan el vocabulario

El registro de estados HTTP de IANA mantiene 226 IM Used asociado al RFC 3229. El registro de campos HTTP de IANA conserva A-IM, Delta-Base e IM como campos permanentes.

La inscripción no demuestra uso generalizado. Garantiza que los símbolos siguen remitiendo a un contrato preciso y no pueden reciclarse sin más para otra técnica incremental.

La lección histórica no consiste en afirmar que la Web adoptó universalmente el delta. Consiste en ver qué cantidad de identidad tuvo que conservar HTTP para que enviar menos siguiera significando entregar lo correcto.

La copia aparecía después de reconstruir

Con 226, el mensaje transportado y la representación actual podían ser objetos distintos. La red llevaba una transformación sin fingir que la transformación fuera el resultado completo.

El cliente probaba la base, el servidor la elegía, IM fijaba el orden, el ETag nombraba la salida y la caché comprendía la cadena o renunciaba a convertirla en un documento.

Sin esa procedencia, un delta no es una verdad eficiente. Es una secuencia breve cargada con un supuesto invisible.

HTTP 226 hizo visible el supuesto: el receptor no obtenía la nueva copia, sino una manera verificable de crearla a partir de la copia que podía demostrar que ya tenía.