{"id":31278,"date":"2026-04-27T14:24:00","date_gmt":"2026-04-27T12:24:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/codigo-de-estado-http-304-significado-y-como-solucionarlo\/"},"modified":"2026-06-10T14:17:14","modified_gmt":"2026-06-10T12:17:14","slug":"codigo-de-estado-http-304","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/es\/codigo-de-estado-http-304\/","title":{"rendered":"C\u00f3digo de estado HTTP 304: qu\u00e9 significa y c\u00f3mo solucionarlo"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp\" alt=\"C\u00f3digo de estado HTTP 304: qu\u00e9 significa y c\u00f3mo solucionarlo\" class=\"wp-image-30520\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-600x315.webp 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-768x403.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Una respuesta 304 es el servidor diciendole al navegador: el contenido no ha cambiado desde la \u00faltima vez que lo revisaste, usa tu copia en cach\u00e9. Eso suele ser una caracter\u00edstica, no un error. Pero cuando hace que los usuarios vean contenido desactualizado, se convierte en un problema que necesitas solucionar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-que-es-el-codigo-de-estado-304\">\u00bfQu\u00e9 es el c\u00f3digo de estado 304?<\/h2>\n\n\n\n<p>HTTP 304 Not Modified es un c\u00f3digo de respuesta de tipo redirecci\u00f3n que le indica al cliente que su versi\u00f3n en cach\u00e9 de un recurso sigue siendo v\u00e1lida. El servidor no env\u00eda contenido en el cuerpo de una respuesta 304, solo cabeceras, lo que se traduce en cargas de p\u00e1gina m\u00e1s r\u00e1pidas y un menor uso de ancho de banda.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-304-not-modified-como-funciona\">304 Not Modified: C\u00f3mo funciona<\/h3>\n\n\n\n<p>La secuencia va as\u00ed: un navegador solicita un recurso y el servidor responde con el contenido m\u00e1s los encabezados de cach\u00e9. En la siguiente visita, el navegador env\u00eda una solicitud condicional (If-Modified-Since o If-None-Match) preguntando si el contenido ha cambiado. Si nada ha cambiado, el servidor responde 304 y el navegador utiliza su cach\u00e9 local. No se transfieren datos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-304-vs-200-cual-es-la-diferencia\">304 vs 200: \u00bfCu\u00e1l es la diferencia?<\/h3>\n\n\n\n<p>Una respuesta 200 env\u00eda el recurso completo. Una respuesta 304 no env\u00eda nada excepto encabezados que confirman que la versi\u00f3n en cach\u00e9 sigue siendo actual. Desde la perspectiva del usuario, ambas hacen que la p\u00e1gina cargue. La diferencia es la velocidad y el ancho de banda. Una respuesta 304 para una imagen de 500KB ahorra 500KB de transferencia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-es-304-un-error-cuando-se-convierte-en-un-problema\">\u00bfEs 304 un error? Cu\u00e1ndo se convierte en un problema<\/h3>\n\n\n\n<p>304 no es un error. Est\u00e1 funcionando como se dise\u00f1\u00f3. Se convierte en un problema cuando has actualizado contenido en tu servidor, pero los usuarios siguen viendo la versi\u00f3n antigua porque sus navegadores est\u00e1n mostrando copias en cach\u00e9 que todav\u00eda no han expirado. Esa es la parte en la que necesitas intervenir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-http-caching-activa-una-respuesta-304\">C\u00f3mo HTTP Caching activa una respuesta 304<\/h2>\n\n\n\n<p>Dos mecanismos controlan si un servidor devuelve 304 o 200 en solicitudes repetidas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-el-encabezado-etag\">El encabezado ETag<\/h3>\n\n\n\n<p>Los ETags son identificadores \u00fanicos generados por el servidor para cada versi\u00f3n de un recurso. El servidor env\u00eda el ETag: \u00ababc123\u00bb con la respuesta inicial. En solicitudes posteriores, el navegador env\u00eda If-None-Match: \u00ababc123\u00bb. Si el ETag actual del servidor coincide, \u00e9l responde con 304. Si no, env\u00eda un 200 con el nuevo contenido y un nuevo ETag.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-el-encabezado-last-modified\">El encabezado Last-Modified<\/h3>\n\n\n\n<p>El encabezado Last-Modified le dice al navegador cu\u00e1ndo se cambi\u00f3 por \u00faltima vez un recurso. En solicitudes posteriores, el navegador env\u00eda If-Modified-Since con esa fecha. Si el recurso no ha sido modificado desde entonces, el servidor responde 304.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cache-control-y-su-papel\">Cache-Control y su papel<\/h3>\n\n\n\n<p>Las cabeceras Cache-Control definen cu\u00e1nto tiempo deben almacenarse en cach\u00e9 los recursos antes de que el navegador haga siquiera una solicitud condicional. Cache-Control: max-age=3600 significa que el navegador no volver\u00e1 a solicitar el recurso durante 3600 segundos. Solo despu\u00e9s de que ese tiempo expire, el navegador env\u00eda la solicitud If-Modified-Since o If-None-Match que puede desencadenar una respuesta 304.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-solucionar-el-codigo-de-estado-304\">C\u00f3mo solucionar el c\u00f3digo de estado 304<\/h2>\n\n\n\n<p>Cuando las respuestas 304 est\u00e1n causando problemas de contenido desactualizado, aqu\u00ed tienes cinco enfoques para solucionarlo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-1-borra-la-cache-de-tu-navegador\">1. Borra la cach\u00e9 de tu navegador<\/h3>\n\n\n\n<p>La soluci\u00f3n inmediata para un solo usuario que ve contenido desactualizado: borrar la cach\u00e9 del navegador. En Chrome, abre Configuraci\u00f3n, ve a Privacidad y seguridad, haz clic en Borrar datos de navegaci\u00f3n, selecciona Im\u00e1genes y archivos en cach\u00e9 y pulsa Borrar datos. En Firefox, abre Opciones, ve a Privacidad y seguridad y luego pulsa Borrar datos en la secci\u00f3n Cookies y datos del sitio.<\/p>\n\n\n\n<p>Esto obliga al navegador a solicitar contenido nuevo en la pr\u00f3xima visita, eludiendo cualquier ciclo de 304 en cach\u00e9.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-2-desactivar-la-cache-del-navegador-para-depuracion\">2. Desactivar la cach\u00e9 del navegador para depuraci\u00f3n<\/h3>\n\n\n\n<p>Durante el desarrollo, utiliza las herramientas de desarrollador del navegador para desactivar la cach\u00e9. En Chrome DevTools, abre la pesta\u00f1a de Red y marca Desactivar cach\u00e9. Esto hace que cada solicitud obtenga una nueva respuesta 200 y facilita verificar que las actualizaciones de contenido est\u00e9n llegando al navegador.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-3-actualiza-los-encabezados-cache-control-del-lado-del-servidor\">3. Actualiza los encabezados Cache-Control del lado del servidor<\/h3>\n\n\n\n<p>Para obligar a los navegadores a volver a validar el contenido en cach\u00e9 con mayor frecuencia, reduce el valor de max-age. En nginx:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>location ~* \\.(css|js)$ { &nbsp; &nbsp; add_header Cache-Control \"public, max-age=300\"; }<\/code><\/pre>\n\n\n\n<p>Establecer el max-age en un valor m\u00e1s corto significa que los navegadores buscar\u00e1n actualizaciones con m\u00e1s frecuencia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-4-fuerza-una-nueva-respuesta-sin-cache\">4. Fuerza una nueva respuesta sin cach\u00e9<\/h3>\n\n\n\n<p>La directiva no-cache no previene la cach\u00e9. Obliga al navegador a revalidar con el servidor en cada solicitud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_header Cache-Control \"no-cache\";<\/code><\/pre>\n\n\n\n<p>Esto significa que cada carga de p\u00e1gina activa una solicitud condicional. Si el contenido no ha cambiado, el servidor a\u00fan devuelve 304. Si ha cambiado, devuelve 200 con contenido nuevo. Los usuarios siempre ven contenido actual sin descargar recursos inalterados repetidamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-5-comprueba-las-capas-de-cache-de-proxy-y-cdn\">5. Comprueba las capas de cach\u00e9 de Proxy y CDN<\/h3>\n\n\n\n<p>Si est\u00e1s detr\u00e1s de una CDN o un proxy inverso, las respuestas 304 podr\u00edan originarse all\u00ed en lugar de provenir de tu servidor de origen. Revisa la configuraci\u00f3n de tu CDN para comprobar los ajustes de TTL de cach\u00e9 y busca cabeceras como X-Cache: HIT en las respuestas. Una CDN que sirve contenido desactualizado necesita que se purgue su cach\u00e9, no solo que se borre la cach\u00e9 del navegador.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-codigo-de-estado-304-y-seo\">C\u00f3digo de estado 304 y SEO<\/h2>\n\n\n\n<p>Las respuestas 304 son generalmente neutrales para SEO. Los rastreadores de los motores de b\u00fasqueda respetan el almacenamiento en cach\u00e9 HTTP, y una respuesta 304 le indica a Googlebot que el contenido de la p\u00e1gina no ha cambiado desde el \u00faltimo rastreo. El rastreador usa su versi\u00f3n en cach\u00e9, lo que es eficiente. Los problemas solo surgen si tu servidor devuelve un 304 cuando el contenido realmente ha cambiado, lo que hace que los rastreadores no detecten tus actualizaciones. Mant\u00e9n precisos tus ETags y encabezados Last-Modified.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-faq-codigo-de-estado-http-304\">FAQ: C\u00f3digo de estado HTTP 304<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1777033592897\"><strong class=\"schema-faq-question\">\u00bfQu\u00e9 significa 304 No modificado?<\/strong> <p class=\"schema-faq-answer\">El servidor est\u00e1 confirmando que el recurso almacenado en la cach\u00e9 del navegador sigue estando actualizado. No se env\u00eda contenido. El navegador carga la p\u00e1gina desde su cach\u00e9 local. Es una funci\u00f3n de rendimiento, no un error.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777033602531\"><strong class=\"schema-faq-question\">\u00bfEs malo un c\u00f3digo de estado 304 para SEO?<\/strong> <p class=\"schema-faq-answer\">No. Los rastreadores de los motores de b\u00fasqueda gestionan correctamente las respuestas 304 y utilizan su versi\u00f3n en cach\u00e9 de la p\u00e1gina. Solo se convierte en un problema si tu sistema de cach\u00e9 est\u00e1 mal configurado y los rastreadores reciben respuestas 304 desactualizadas cuando el contenido realmente ha cambiado.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777033610667\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo dejo de recibir respuestas 304?<\/strong> <p class=\"schema-faq-answer\">Configura Cache-Control: no-store en los recursos afectados para evitar el almacenamiento en cach\u00e9 por completo, o utiliza Cache-Control: no-cache para forzar una revalidaci\u00f3n en cada solicitud. Para desarrollo, desactiva la cach\u00e9 en las herramientas de desarrollador del navegador.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777033618765\"><strong class=\"schema-faq-question\">\u00bfCu\u00e1l es la diferencia entre 304 y 302?<\/strong> <p class=\"schema-faq-answer\">Son completamente diferentes. 302 es un redireccionamiento: el navegador lo sigue a una nueva URL. 304 es una respuesta de validaci\u00f3n de cach\u00e9: el navegador utiliza su copia en cach\u00e9 local de la URL actual. Sucedan en diferentes escenarios y tienen diferentes prop\u00f3sitos.<\/p> <\/div> <\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una respuesta 304 es el servidor diciendole al navegador: el contenido no ha cambiado desde la \u00faltima vez que lo revisaste, usa tu copia en cach\u00e9. Eso suele ser una caracter\u00edstica, no un error. Pero cuando hace que los usuarios vean contenido desactualizado, se convierte en un problema que necesitas solucionar. \u00bfQu\u00e9 es el c\u00f3digo [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":30522,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1988],"tags":[],"ppma_author":[3402],"class_list":["post-31278","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-150x150.webp",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-600x315.webp",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code-768x403.webp",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_how2-fix-http-304-status-code.webp",1200,630,false]},"uagb_author_info":{"display_name":"Milan Ivanovic","author_link":"https:\/\/contabo.com\/blog\/es\/author\/milan\/"},"uagb_comment_info":0,"uagb_excerpt":"Una respuesta 304 es el servidor diciendole al navegador: el contenido no ha cambiado desde la \u00faltima vez que lo revisaste, usa tu copia en cach\u00e9. Eso suele ser una caracter\u00edstica, no un error. Pero cuando hace que los usuarios vean contenido desactualizado, se convierte en un problema que necesitas solucionar. \u00bfQu\u00e9 es el c\u00f3digo&hellip;","authors":[{"term_id":3402,"user_id":0,"is_guest":1,"slug":"contabro","display_name":"ContaBro","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","user_url":"","last_name":"","first_name":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31278","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=31278"}],"version-history":[{"count":2,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31278\/revisions"}],"predecessor-version":[{"id":31283,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31278\/revisions\/31283"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media\/30522"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=31278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=31278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=31278"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=31278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}