{"schema_version":"1.0","type":"Article","canonical_url":"https://visteesto.com/nota/etag-cache-http-ahorrar-datos","machine_urls":{"markdown":"https://visteesto.com/ai/article/etag-cache-http-ahorrar-datos/markdown","json":"https://visteesto.com/ai/article/etag-cache-http-ahorrar-datos/json"},"publisher":{"name":"VisteEsto","url":"https://visteesto.com","editor":"Martín Rodríguez","editorial_policy":"https://visteesto.com/politica-editorial","corrections_policy":"https://visteesto.com/correcciones"},"headline":"ETag: qué es y cómo ahorra datos en HTTP","description":"Qué es el encabezado ETag, cómo se combina con If-None-Match y cuándo un servidor responde 304 para evitar transferir de nuevo un recurso.","dek":"Un ETag identifica una versión de una respuesta HTTP. El cliente puede enviarlo en If-None-Match para que el servidor confirme si el recurso cambió: si sigue igual, responde 304 sin repetir el cuerpo. Esta guía separa caché, validadores fuertes y débiles y conflictos de edición.","language":"es","section":"Tecnología","topic":"etag-cache-http","tags":["Programación","HTTP","Web","Backend","Tecnología"],"author":{"name":"Martin Rodriguez","profile_url":"https://visteesto.com/autor/martin-rodriguez"},"date_published":"2026-10-04T15:00:00.000Z","date_modified":"2026-10-04T15:00:00.000Z","search_intent":"service","content_format":"service","primary_query":"qué es un ETag y cómo funciona en HTTP","intended_audience":"Personas que desarrollan sitios o APIs y necesitan reducir transferencias, validar respuestas almacenadas y evitar que una actualización pise otra.","original_contribution":"VisteEsto convierte la documentación de HTTP en una checklist de implementación: definir la representación, probar 200/304, coordinar Cache-Control, elegir el validador y medir bytes, caché y conflictos.","key_facts":[{"statement":"ETag identifica una versión específica de una representación y permite validar una copia almacenada.","evidence_url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/ETag"},{"statement":"If-None-Match permite que una solicitud condicional reciba 304 cuando coincide una representación seleccionada.","evidence_url":"https://www.rfc-editor.org/rfc/rfc9110.html"},{"statement":"Una respuesta 304 no repite el cuerpo y permite reutilizar la respuesta guardada en caché.","evidence_url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Conditional_requests"},{"statement":"Los ETags débiles usan W/ y no expresan necesariamente igualdad byte por byte.","evidence_url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/ETag"}],"sections":[{"heading":"Qué es un ETag","paragraphs":["ETag significa entity tag y es un identificador que el servidor devuelve para una representación concreta de un recurso HTTP. Puede basarse en un hash del contenido, una revisión o una marca interna. Su formato no obliga a usar un algoritmo determinado, pero debe permitir comparar versiones de una misma URL.","Cuando el cliente recibe un ETag, puede guardarlo junto con la respuesta. La próxima vez que necesite comprobar si el recurso cambió, no tiene que descargarlo completo de entrada: envía el valor en el encabezado If-None-Match y pide al servidor una comparación.","El validador describe una representación, no garantiza que el contenido sea correcto ni reemplaza Cache-Control. La política de caché decide cuándo reutilizar una respuesta; ETag permite validar si la copia almacenada todavía coincide con la versión elegida por el servidor."]},{"heading":"Cómo funciona 304 con If-None-Match","paragraphs":["En una solicitud condicional GET, el cliente envía If-None-Match con uno o más ETags conocidos. Si el servidor encuentra una coincidencia para la representación seleccionada, responde 304 Not Modified y omite el cuerpo. El cliente conserva la respuesta que ya tiene y ahorra transferencia.","Si no hay coincidencia, el servidor devuelve una respuesta normal con el contenido actual y su nuevo ETag. El cliente reemplaza su copia y vuelve a guardar el validador. La secuencia permite actualizar recursos sin inventar una descarga cero: todavía hay una consulta, pero no se repite el cuerpo cuando nada cambió.","If-None-Match también puede proteger operaciones inseguras con el valor *. En ese caso, la condición ayuda a evitar que una creación sobrescriba una representación que ya existe. Para actualizaciones colaborativas, If-Match y una respuesta 412 pueden detectar que otra persona editó el recurso antes de guardar."]},{"heading":"ETags fuertes, débiles y caché","paragraphs":["Un ETag fuerte representa una comparación exacta de bytes: es útil cuando importa que dos respuestas sean idénticas, incluso para solicitudes de rango. Un ETag débil lleva el prefijo W/ y expresa equivalencia semántica; puede servir para validar una caché aunque cambien detalles que no alteran el significado.","El servidor debe generar un nuevo valor cuando cambia la representación que está entregando. Cambiar el ETag por cada respuesta sin relación con el contenido elimina la ventaja del validador, mientras que conservarlo después de un cambio puede hacer que el cliente use datos viejos.","ETag y Last-Modified pueden coexistir. If-None-Match suele ser más preciso para comparar representaciones, mientras que Last-Modified ofrece una fecha útil como respaldo. La elección debe contemplar compresión, transformaciones de intermediarios y si el cliente necesita rangos de bytes."]},{"heading":"Checklist para usar ETag en una API o sitio","paragraphs":["Definí qué representación identifica el ETag: HTML, JSON, imagen o descarga. Generá el valor desde el contenido o desde una versión que cambie al publicar y enviá también una política Cache-Control coherente. Probá una primera respuesta 200, una solicitud con If-None-Match coincidente y otra con un valor obsoleto.","Registrá que 304 no trae cuerpo y que el cliente debe reutilizar su respuesta almacenada. En una API, mantené el mismo contrato de validación para GET y documentá qué pasa cuando el recurso cambia. Para escrituras, elegí If-Match si necesitás evitar que una edición pise otra y tratá 412 como un conflicto que debe resolverse.","Medí bytes transferidos, porcentaje de respuestas 304, latencia y errores de validación. Revisá también proxies y CDN: una transformación que cambia la representación puede requerir otro validador. Un ETag útil reduce tráfico y detecta actualizaciones; no corrige por sí solo una estrategia de caché mal definida."]}],"sources":[{"name":"MDN: ETag header","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/ETag","kind":"primary"},{"name":"RFC 9110: HTTP Semantics","url":"https://www.rfc-editor.org/rfc/rfc9110.html","kind":"primary"},{"name":"MDN: HTTP conditional requests","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Conditional_requests","kind":"primary"}],"primary_source_gap":null,"images":[{"url":"https://visteesto.com/media/etag-cache-http-ahorrar-datos/cover.jpg","alt":"Respuesta HTTP 304 que reutiliza una copia sin repetir el cuerpo","width":1200,"height":675,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/etag-cache-http-ahorrar-datos","caption":"Ilustración editorial: el servidor compara un ETag y evita transferir de nuevo una representación sin cambios."},{"url":"https://visteesto.com/media/etag-cache-http-ahorrar-datos/inline-1.jpg","alt":"Ciclo HTTP de ETag e If-None-Match","width":1200,"height":800,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/etag-cache-http-ahorrar-datos","caption":"Ilustración editorial: el cliente envía el validador y recibe 304 cuando la representación coincide."},{"url":"https://visteesto.com/media/etag-cache-http-ahorrar-datos/inline-2.jpg","alt":"Comparación entre ETag fuerte y ETag débil","width":1200,"height":800,"creator":"VisteEsto","license":"VisteEsto editorial","licenseUrl":"https://visteesto.com/terminos","sourceUrl":"https://visteesto.com/nota/etag-cache-http-ahorrar-datos","caption":"Ilustración editorial: los validadores fuertes y débiles expresan criterios diferentes de igualdad."}],"videos":[],"update_log":[{"date":"2026-10-04T15:00:00.000Z","note":"Publicación inicial basada en MDN ETag, RFC 9110 y la guía de solicitudes condicionales de MDN."}],"citation_guidance":{"preferred_url":"https://visteesto.com/nota/etag-cache-http-ahorrar-datos","include":["headline","author","date_published_or_modified","preferred_url"]}}