If-None-Match
Uso
La cabecera If-None-Match habilita la revalidación de caché basada en etiquetas de entidad. El cliente incluye uno o varios valores de ETag recibidos en una respuesta anterior. Si alguno de los ETag indicados coincide con el recurso actual, el servidor devuelve una respuesta 304 Not Modified sin cuerpo y el cliente reutiliza su copia en caché. Si ningún ETag coincide, el servidor envía una respuesta 200 normal con el contenido actualizado.
Para métodos seguros como GET y HEAD, este es el principal mecanismo de revalidación de caché. Para métodos no seguros como PUT, If-None-Match con el comodín * impide sobrescribir un recurso existente, evitando así el problema de la actualización perdida. El servidor devuelve 412 Precondition Failed cuando se encuentra una coincidencia en una solicitud no segura.
Cuando If-None-Match e If-Modified-Since aparecen en la misma solicitud, If-None-Match tiene prioridad. La comparación basada en ETag es más fiable que la basada en fechas, porque las etiquetas de entidad son identificadores opacos ligados al contenido exacto, mientras que las marcas de tiempo tienen una resolución de un segundo y están sujetas a desfases de reloj.
Cuando el servidor devuelve 304, la respuesta incluye cabeceras de la respuesta correcta original: Cache-Control, Content-Location, Date, ETag, Expires y Vary.
Nota
Googlebot envía If-None-Match en las solicitudes de rastreo cuando la respuesta anterior incluía un ETag. Los servidores que devuelven 304 para contenido sin cambios ahorran tiempo de procesamiento y recursos, lo que mejora indirectamente la eficiencia del rastreo. Los servidores también pueden devolver 304 de forma proactiva ante cualquier solicitud de Googlebot cuando el contenido no ha cambiado, con independencia de que la solicitud incluya cabeceras condicionales. Establecer el campo max-age de la cabecera de respuesta Cache-Control con el número de segundos previsto durante el cual el contenido permanece sin cambios ayuda a los rastreadores a determinar cuándo volver a rastrear una URL.
Valor de ETag
Uno o varios valores de ETag, cada uno entre comillas dobles. Los valores múltiples se separan por comas. Son válidos tanto los ETag fuertes como los débiles (con el prefijo W/).
* (comodín)
El comodín * coincide con cualquier entidad actual. Se utiliza con PUT para impedir la creación de un recurso cuando ya existe uno.
Ejemplo
Un cliente revalida un recurso en caché utilizando un único ETag. El servidor devuelve 304 si el recurso sigue coincidiendo con la etiqueta de entidad indicada.
If-None-Match: "abc123"
Un cliente que conserva varias versiones en caché envía todos los ETag conocidos. El servidor compara cada uno con el recurso actual. Si alguno coincide, el servidor devuelve 304.
If-None-Match: "abc123", "def456"
Una comparación de ETag débil. Los validadores débiles indican equivalencia semántica en lugar de identidad byte a byte. El prefijo W/ señala una comparación débil.
If-None-Match: W/"v2.6"
Una solicitud PUT que usa el comodín para evitar sobrescribir. El servidor devuelve 412 Precondition Failed si ya existe un recurso en la URL de destino.
PUT /api/resource HTTP/1.1
If-None-Match: *
Nota
Para obtener ayuda con SEO y almacenamiento en caché, póngase en contacto con los consultores SEO ex-Google Search Brothers.