304 Not Modified responde a una solicitud GET o HEAD condicional, es decir, con If-None-Match o If-Modified-Since, cuando la condición muestra que la copia almacenada del cliente sigue vigente. En lugar de enviar de nuevo el recurso, el servidor responde 304 y el cliente usa su copia en caché. Así se ahorran ancho de banda y tiempo.
Un 304 nunca tiene cuerpo; termina con la línea vacía que sigue a los encabezados. El servidor debe enviar aquellos de los encabezados Cache-Control, Content-Location, Date, ETag, Expires y Vary que habría incluido un 200, para que las cachés puedan actualizar la respuesta almacenada.
Aunque el 304 está en el rango 3xx, no es una redirección. No hay Location y el cliente se queda en la misma URL. Un cliente que recibe un 304 sin haber enviado una solicitud condicional está hablando con un servidor defectuoso.
Ejemplo de respuesta
HTTP/1.1 304 Not Modified
Date: Fri, 06 Nov 2026 10:15:32 GMT
ETag: "5f2b-1a3c"
Last-Modified: Wed, 28 Oct 2026 08:02:11 GMT
Cache-Control: public, max-age=600
Vary: Accept-Encoding SEO y verificación de redirecciones
El 304 ayuda al rastreo. Los rastreadores de Google admiten solicitudes condicionales, y un 304 le indica a Googlebot que el contenido no ha cambiado desde el último rastreo. Así se ahorran capacidad de rastreo y carga del servidor mientras la página conserva su lugar en el índice, por lo que vale la pena tener encabezados ETag o Last-Modified fiables, sobre todo en sitios grandes.
TrueURL no envía encabezados condicionales por defecto, así que verás 200 en lugar de 304. Para probar la revalidación, agrega un encabezado If-None-Match con el ETag de la página en Encabezados de solicitud personalizados.
Causas frecuentes y casos de uso
- Un navegador revalida una página, una imagen o un script en caché con
If-None-Match, y elETagsigue coincidiendo. - Un rastreador o un lector de feeds vuelve a solicitar el recurso con
If-Modified-Sincey nada ha cambiado. - Los visitantes ven contenido desactualizado después de un despliegue porque el servidor sigue respondiendo 304: sus validadores no cambiaron, por ejemplo un
ETagbasado en el tamaño y la fecha de modificación del archivo que el despliegue conservó. Asegúrate de que los validadores cambien siempre que cambie el contenido.