{"id":19521,"date":"2026-05-30T15:02:41","date_gmt":"2026-05-30T13:02:41","guid":{"rendered":"https:\/\/webhosting.de\/http-conditional-requests-cache-validierung-optimierung-paket\/"},"modified":"2026-05-30T15:02:41","modified_gmt":"2026-05-30T13:02:41","slug":"paquete-de-optimizacion-de-la-validacion-de-la-cache-de-peticiones-condicionales-http","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/http-conditional-requests-cache-validierung-optimierung-paket\/","title":{"rendered":"Comprender las peticiones condicionales HTTP y la validaci\u00f3n de la cach\u00e9"},"content":{"rendered":"<p><strong>HTTP Condicional<\/strong> Las peticiones reducen los costes de transmisi\u00f3n al garantizar que el cliente s\u00f3lo cargue un recurso por completo si realmente se ha modificado desde la \u00faltima petici\u00f3n. Mostrar\u00e9 c\u00f3mo <strong>Validaci\u00f3n de la cach\u00e9<\/strong> con ETag, Last-Modified, If-None-Match, If-Modified-Since y 304 Not Modified funciona de forma fiable y los tiempos de carga se reducen notablemente.<\/p>\n\n<h2>Puntos centrales<\/h2>\n\n<ul>\n  <li><strong>Validaci\u00f3n<\/strong> en lugar de la descarga completa: 304 ahorra ancho de banda y tiempo.<\/li>\n  <li><strong>ETag<\/strong> y Last-Modified trabajan juntos para un control limpio.<\/li>\n  <li><strong>Control de la cach\u00e9<\/strong> define la frescura, caduca s\u00f3lo suplementos.<\/li>\n  <li><strong>Condiciones previas<\/strong> como los procesos de escritura segura If-Match.<\/li>\n  <li><strong>Seguridad<\/strong> requiere private\/no-store para contenidos sensibles.<\/li>\n<\/ul>\n\n<h2>Qu\u00e9 hacen las peticiones condicionales en la vida cotidiana<\/h2>\n\n<p>He puesto <strong>Condicional<\/strong> para plantear al servidor una pregunta clara: \u00bfRealmente necesito transferir nuevos datos o mi cach\u00e9 es suficiente? El navegador o un proxy env\u00eda las condiciones, el servidor comprueba si un archivo ha cambiado y responde con 304 Not Modified sin cuerpo. Este patr\u00f3n mantiene actualizados HTML, CSS, JavaScript, im\u00e1genes y respuestas de API y reduce significativamente la carga de la infraestructura. Para los activos v\u00e1lidos m\u00e1s largos, utilizo valores max-age largos y me aseguro de que est\u00e9n actualizados mediante validaci\u00f3n. Si dispone de <a href=\"https:\/\/webhosting.de\/es\/estrategias-de-control-de-cache-http-alojamiento-cachemaster\/\">Estrategias de control de la cach\u00e9<\/a> saca el m\u00e1ximo partido de las cach\u00e9s sin arriesgarse a que los contenidos queden obsoletos.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/05\/httpcache-0614.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Cabeceras que permiten la validaci\u00f3n de la cach\u00e9<\/h2>\n\n<p>Para una mayor fiabilidad <strong>Cache<\/strong>-El cliente necesita se\u00f1ales claras de la respuesta para tomar decisiones. Yo utilizo Cache-Control para la frescura y las reglas, Expires ocasionalmente como complemento, y Last-Modified y ETag para la validaci\u00f3n real. Last-Modified proporciona una hora de modificaci\u00f3n que puede comprobarse r\u00e1pidamente, mientras que ETag proporciona un identificador de versi\u00f3n que tambi\u00e9n se utiliza para el contenido din\u00e1mico. Sigue siendo importante: no-cache significa validar antes de usar, no borrar. Si aplica correctamente esta sem\u00e1ntica, conseguir\u00e1 reducir notablemente el tr\u00e1fico de datos a la vez que mantiene actualizado su contenido. <strong>Contenido<\/strong>.<\/p>\n\n<h2>Secuencia de una solicitud condicional sin desv\u00edos<\/h2>\n\n<p>En la primera llamada, el cliente guarda el archivo y los valores de validaci\u00f3n como <strong>ETag<\/strong> o Last-Modified en la cach\u00e9. M\u00e1s tarde, el recurso caduca o requiere una nueva comprobaci\u00f3n antes de su uso, y el cliente env\u00eda If-None-Match o If-Modified-Since. El servidor compara la informaci\u00f3n con el estado actual y devuelve 200 OK con un nuevo cuerpo o 304 Not Modified sin carga \u00fatil. El cliente contin\u00faa entonces utilizando la copia existente y ahorra transmisi\u00f3n, carga de trabajo TLS y tiempo. Este ping-pong parece discreto, pero el <strong>Efecto<\/strong> sobre la sensaci\u00f3n de carga y la carga del servidor es clara.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/05\/http_requests_besprechung_4827.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>ETag vs. Last-Modified en comparaci\u00f3n directa<\/h2>\n\n<p>Utilizo <strong>\u00daltima modificaci\u00f3n<\/strong> Me gusta utilizar marcas de tiempo como una referencia r\u00e1pida y sencilla, pero uso ETags para un control de grano fino. Las marcas de tiempo pueden llegar a sus l\u00edmites con intervalos de cambio muy cortos o falsear los resultados din\u00e1micos. Yo creo ETags a partir de hashes de archivos, versiones de bases de datos o variantes de renderizado, con lo que cada cambio en el contenido genera un nuevo identificador. Ambos mecanismos pueden combinarse: El cliente puede enviar If-None-Match e If-Modified-Since en paralelo, y el servidor selecciona la comprobaci\u00f3n adecuada. C\u00f3mo garantizar la fiabilidad <strong>Validaci\u00f3n<\/strong>, que se aplica por igual a los recursos est\u00e1ticos y din\u00e1micos.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Criterio<\/th>\n      <th>\u00daltima modificaci\u00f3n<\/th>\n      <th>ETag<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>Precisi\u00f3n<\/strong><\/td>\n      <td>Segunda resoluci\u00f3n, adecuada para archivos<\/td>\n      <td>Identificador de versi\u00f3n para cada cambio de contenido<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Din\u00e1mica<\/strong><\/td>\n      <td>D\u00e9bil con cambios frecuentes no basados en archivos<\/td>\n      <td>Fuerte para API y contenido renderizado<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Gastos<\/strong><\/td>\n      <td>Bajo, disponible en el sistema de archivos<\/td>\n      <td>Baja a moderada, generaci\u00f3n en app\/proxy<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Conflictos<\/strong><\/td>\n      <td>Posibles desviaciones del reloj<\/td>\n      <td>Posibilidad de etiquetas d\u00e9biles\/fuertes mal configuradas<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Configuraci\u00f3n correcta de la cach\u00e9 del navegador y las API<\/h2>\n\n<p>Para los activos est\u00e1ticos, utilizo <strong>max-age<\/strong> y guardar mediante ETag o hash de nombre de archivo para que las actualizaciones se reconozcan inmediatamente. A menudo marco las respuestas HTML y API con no-cache para que el cliente las valide antes de usarlas sin tener que recargar todo cada vez. Marco las p\u00e1ginas personalizadas con private para que las cach\u00e9s compartidas no muestren nada que haya sido retenido a otros. Los errores suelen deberse a directivas contradictorias o a la falta de cabeceras de validaci\u00f3n, que evito con reglas claras. Si conoces los tropiezos t\u00edpicos, puedes evitarlos f\u00e1cilmente; el art\u00edculo sobre <a href=\"https:\/\/webhosting.de\/es\/http-cache-headers-sabotear-el-almacenamiento-en-cache-cachefix\/\">Trampas de cabecera en la cach\u00e9<\/a>, en la que me gusta orientarme.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/05\/http-conditional-cache-validation-3847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Utilizar eficazmente los c\u00f3digos de estado y las condiciones<\/h2>\n\n<p>Organizo <strong>C\u00f3digos de estado<\/strong> Claramente: 200 OK entrega el contenido, 304 Not Modified confirma el uso de la cach\u00e9, y 412 Precondition Failed cancela si no se cumple una condici\u00f3n. Para operaciones de escritura seguras, utilizo If-Match para que las actualizaciones s\u00f3lo tengan efecto si el ETag corresponde a la versi\u00f3n esperada. La lectura con If-None-Match o If-Modified-Since evita cargas superfluas y mantiene sincronizados a los clientes. Un comportamiento coherente es importante: El mismo endpoint debe responder de forma id\u00e9ntica para condiciones previas id\u00e9nticas. Para SEO y bots, presto atenci\u00f3n a c\u00f3mo las cach\u00e9s y los rastreadores interpretan los mensajes de estado; una buena visi\u00f3n general de <a href=\"https:\/\/webhosting.de\/es\/codigos-de-estado-http-rastreo-optimizacion-de-alojamiento-crawlboost\/\">C\u00f3digos de estado HTTP y rastreo<\/a> ayuda a tomar decisiones limpias.<\/p>\n\n<h2>Seguridad y protecci\u00f3n de datos en la cach\u00e9<\/h2>\n\n<p>Trato los contenidos sensibles con <strong>no-store<\/strong> y as\u00ed evitar que acaben en la cach\u00e9 del navegador o del proxy. Marco las p\u00e1ginas personalizadas con Cache-Control: private y compruebo que no aparezcan datos personales en las URL almacenadas en cach\u00e9 a largo plazo. Dise\u00f1o las ETags de forma neutral, sin permitir que se saquen conclusiones sobre cuentas de usuario o ID internos. Desactivo sistem\u00e1ticamente todo almacenamiento en cach\u00e9 para las vistas de inicio de sesi\u00f3n y los flujos bancarios. Si combinas minimizaci\u00f3n de datos, directivas adecuadas y cabeceras limpias, reduces el riesgo y proteges tus datos. <strong>Confidencialidad<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/05\/http_cache_validierung_6789.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Aplicaci\u00f3n: Pasos para el servidor y la aplicaci\u00f3n<\/h2>\n\n<p>Al principio separo <strong>est\u00e1tico<\/strong> de los recursos din\u00e1micos y decido d\u00f3nde tienen sentido los plazos largos y d\u00f3nde tiene prioridad la validaci\u00f3n. En Nginx, Apache o un servidor de aplicaciones, configuro el control de cach\u00e9 y activo last-modified y ETags, con lo que sit\u00fao la generaci\u00f3n de ETags en la aplicaci\u00f3n para los endpoints din\u00e1micos. Al procesar las peticiones entrantes, eval\u00fao If-None-Match e If-Modified-Since y respondo con 304 si la condici\u00f3n coincide. Para las operaciones de escritura, utilizo If-Match y devuelvo 412 en caso de desviaci\u00f3n para evitar la sobreescritura. Esto crea un comportamiento coherente que utiliza las cach\u00e9s de forma eficiente y al mismo tiempo <strong>Correcci\u00f3n<\/strong> asegura.<\/p>\n\n<h2>Utilizar m\u00e9tricas, pruebas y supervisi\u00f3n con sensatez<\/h2>\n\n<p>Compruebo el <strong>Red<\/strong>-tab de las DevTools para comprobar si los recursos proceden de la cach\u00e9, se est\u00e1n validando o acaban de cargarse. Superviso el estado, los valores de antig\u00fcedad, las ETags y el tama\u00f1o de la respuesta transferida. Bajo carga, mido la latencia, el volumen de transferencia y la CPU del servidor para ver el efecto real de las respuestas 304. Los registros del proxy inverso muestran si las cach\u00e9s compartidas est\u00e1n haciendo su trabajo y cu\u00e1ntas validaciones tienen \u00e9xito. Utilizo estos datos para ajustar la edad m\u00e1xima, las directivas de control de la cach\u00e9 y las estrategias ETag hasta que los tiempos de respuesta y la velocidad de transferencia se reducen. <strong>Tasa de aciertos<\/strong> votar.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/05\/EntwicklerdeskCache3178.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Rendimiento del alojamiento: por qu\u00e9 las peticiones condicionales ahorran dinero<\/h2>\n\n<p>Cualquier <strong>304<\/strong>-La respuesta de cach\u00e9 compartida ahorra ancho de banda, reduce la sobrecarga TLS y acorta el tiempo de respuesta, lo que es particularmente importante para muchas peticiones similares. En las configuraciones de alojamiento con proxies inversos, balanceadores de carga y CDN, logro el mayor efecto cuando permito claramente o excluyo espec\u00edficamente las cach\u00e9s compartidas. Menos transferencia a menudo tambi\u00e9n significa menores costes de tr\u00e1fico en euros y m\u00e1s reservas para picos de carga reales. La experiencia del usuario tambi\u00e9n mejora porque las visitas repetidas a las p\u00e1ginas y los sondeos de API responden con mayor rapidez. De este modo, aprovecho el potencial de rendimiento que las actualizaciones de hardware no pueden ofrecer por s\u00ed solas y utilizo los recursos existentes para mejorar el rendimiento. <strong>Infraestructura<\/strong> mejor.<\/p>\n\n<h2>Errores comunes y soluciones pragm\u00e1ticas<\/h2>\n\n<p>Contradictorio <strong>Encabezado<\/strong> como no-cache emparejados con expires far in the future confunden las cach\u00e9s; yo establezco reglas claras sin duplicaci\u00f3n. Las ETags que faltan en los endpoints din\u00e1micos provocan descargas completas innecesarias; a\u00f1ado un identificador fiable y eval\u00fao if-none-match. Los valores max-age demasiado cortos desperdician potencial con archivos que cambian raramente; estiro los plazos y a\u00fan as\u00ed los aseguro con validaci\u00f3n. El almacenamiento agresivo en cach\u00e9 del HTML retrasa los cambios visibles; combino no-cache con ETag y mantengo el contenido actualizado. Con decisiones claras sobre frescura, validaci\u00f3n y validez, resuelvo estos escollos y refuerzo la <strong>Planificabilidad<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/05\/cache-validierung-5836.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Utilice Vary de forma limpia y controle las representaciones<\/h2>\n\n<p>Para garantizar que las peticiones condicionales funcionen de forma segura en las cach\u00e9s compartidas, me aseguro de utilizar el m\u00e9todo correcto <strong>Variar<\/strong>. La cabecera define qu\u00e9 cabeceras de solicitud influyen en la representaci\u00f3n. Ejemplos t\u00edpicos son <em>Aceptaci\u00f3n de codificaci\u00f3n<\/em> (gzip, br), <em>Aceptar idioma<\/em> y <em>Acepte<\/em>. Si ofrezco contenidos por idioma, configuro Vary: Accept-Language para que un proxy no comparta la versi\u00f3n alemana en respuesta a una solicitud en franc\u00e9s. Para los contenidos personalizados, prescindo deliberadamente de Vary: Cookie y utilizo en su lugar <em>Control de cach\u00e9: privado<\/em>, para evitar una explosi\u00f3n incontrolable de claves de cach\u00e9. Para los recursos que s\u00f3lo se entregan con una autorizaci\u00f3n v\u00e1lida, utilizo private o aseguro una separaci\u00f3n clara con Vary: Authorisation o Vary en las cabeceras relevantes. La coherencia es importante: el conjunto seleccionado de dimensiones Vary debe permanecer estable; de lo contrario, la tasa de aciertos de la cach\u00e9 y los beneficios de la validaci\u00f3n se desplomar\u00e1n porque constantemente se crean nuevas variantes.<\/p>\n\n<h2>ETags fuertes frente a d\u00e9biles, compresi\u00f3n e igualdad de bytes<\/h2>\n\n<p><strong>ETags fuertes<\/strong> caracterizan representaciones id\u00e9nticas byte a byte y permiten una validaci\u00f3n precisa, tambi\u00e9n en combinaci\u00f3n con solicitudes de rango. <strong>ETags d\u00e9biles<\/strong> (W\/...) s\u00f3lo se\u00f1alan igualdad de contenido, no necesariamente bytes id\u00e9nticos. En la pr\u00e1ctica, utilizo ETags fuertes si puedo generar un identificador \u00fanico para cada representaci\u00f3n (incluida la compresi\u00f3n). En cuanto un proxy inverso utiliza gzip o brotli sobre la marcha, adapto la generaci\u00f3n de ETags o cambio a ETags d\u00e9biles para que el servidor y el cliente no reconozcan err\u00f3neamente bytes diferentes como id\u00e9nticos. Una variante robusta es crear el ETag a partir de los bytes finales de la respuesta entregada y al mismo tiempo utilizar <em>Vary: Accept-Encoding<\/em> . Esto garantiza que \u201egzip\u201c y \u201ebr\u201c reciban cada uno su propia ETag v\u00e1lida. Cuando no puedo garantizar la igualdad de bytes (por ejemplo, diferentes marcas de tiempo en HTML), elijo ETags d\u00e9biles que siguen permitiendo respuestas 304 fiables siempre que el significado de la p\u00e1gina no haya cambiado.<\/p>\n\n<h2>Control de cach\u00e9 en el ajuste fino: s-maxage, must-revalidate, stale-while-revalidate<\/h2>\n\n<p>Adem\u00e1s de <em>max-age<\/em> En concreto, utilizo directivas m\u00e1s finas. <strong>s-maxage<\/strong> se dirige exclusivamente a <em>Cach\u00e9s compartidas<\/em> (CDNs, proxies) y me permite cachear m\u00e1s agresivamente all\u00ed que en el navegador. <strong>debe revalidarse<\/strong> obliga a los clientes a no utilizar heur\u00edsticamente los contenidos caducados, sino a validarlos siempre, lo que resulta \u00fatil para los datos cr\u00edticos. <strong>proxy-revalidar<\/strong> aborda esta obligaci\u00f3n espec\u00edficamente para las cach\u00e9s compartidas. En <strong>stale-while-revalidate<\/strong> Permito que una copia ligeramente obsoleta se entregue brevemente mientras la validaci\u00f3n se ejecuta en segundo plano; los usuarios ven algo inmediatamente y la siguiente solicitud se beneficia de metadatos frescos. <strong>stale-if-error<\/strong> como red de seguridad: Si el Origen falla o devuelve errores, se permite a la cach\u00e9 entregar la \u00faltima copia conocida durante un tiempo definido. Para los activos build-hashed, combino long max-age con <em>inmutable<\/em>, ya que el nombre del archivo cambia con el contenido y las validaciones intermedias son innecesarias. Para HTML y API, no-cache m\u00e1s validador sigue siendo el est\u00e1ndar de oro para garantizar la actualizaci\u00f3n y ahorrar ancho de banda.<\/p>\n\n<h2>Otras condiciones y m\u00e9todos: HEAD, alcance y conflictos de escritura<\/h2>\n\n<p>Las solicitudes condicionales no se limitan a GET. A <strong>HEAD<\/strong>-request s\u00f3lo proporciona cabeceras y es ideal para validaciones r\u00e1pidas sin cuerpo. Para archivos grandes utilizo <strong>alcance<\/strong>-solicitudes; con <strong>If-Range<\/strong> Me aseguro de que s\u00f3lo se env\u00eden \u00e1reas parciales si el recurso sigue coincidiendo con la versi\u00f3n esperada; de lo contrario, respondo con 200 y un cuerpo completo. Para las operaciones de escritura, aseguro la coherencia con <strong>Si coincide<\/strong> ab: PUT, PATCH o DELETE s\u00f3lo funcionan si el ETag del cliente coincide con la versi\u00f3n actual; de lo contrario respondo con 412 Precondition Failed. Cuando quiero imponer precondiciones, por ejemplo con recursos propensos a conflictos, utilizo 428 Precondition Required para que los clientes utilicen If-Match. Elijo deliberadamente entre 409 Conflicto y 412: 412 se\u00f1ala las precondiciones violadas, 409 enfatiza los conflictos de contenido (por ejemplo, reglas de l\u00f3gica de negocio). Esta claridad facilita las implementaciones de los clientes y evita las anulaciones ciegas.<\/p>\n\n<h2>Personalizaci\u00f3n, cookies y protecci\u00f3n de datos en la pr\u00e1ctica<\/h2>\n\n<p>Para las p\u00e1ginas personalizadas, marco las respuestas con <strong>privado<\/strong> o <strong>no-store<\/strong>. Evito codificar los estados de los usuarios en etiquetas electr\u00f3nicas porque \u00e9stas pueden convertirse involuntariamente en marcadores de seguimiento. En su lugar, hago una distinci\u00f3n estricta entre representaciones p\u00fablicas y privadas. S\u00f3lo establezco cookies en la clave de cach\u00e9 (Vary: Cookie) si es absolutamente necesario, porque aumentan el n\u00famero de variantes y reducen dr\u00e1sticamente la tasa de aciertos. Para las respuestas API autorizadas me atengo a <em>Control de cach\u00e9: privado<\/em> y, si es necesario, a Vary en el formato de la cabecera Authorisation. As\u00ed me aseguro de que las cach\u00e9s compartidas no compartan inadvertidamente respuestas confidenciales. En las aplicaciones con contenido mixto (marco b\u00e1sico p\u00fablico, sub\u00e1reas personalizadas), conf\u00edo en el almacenamiento en cach\u00e9 fragmentado o en ESI\/SSI de borde, mientras que las partes cr\u00edticas siguen siendo privadas. El resultado es la protecci\u00f3n de los datos sin merma del rendimiento.<\/p>\n\n<h2>Operaci\u00f3n: CDN, sustitutos e invalidaciones<\/h2>\n\n<p>En las configuraciones CDN combino <strong>s-maxage<\/strong> con validadores claros y, si est\u00e1n disponibles, utilizar directivas espec\u00edficas de sustitutos para controlar las cach\u00e9s de los bordes de forma independiente del navegador. La revalidaci\u00f3n reduce la carga sobre Origin, pero ocasionalmente es necesaria una invalidaci\u00f3n dura (por ejemplo, correcci\u00f3n de seguridad). Entonces planeo dos maneras: <em>Reventar la cach\u00e9<\/em> mediante hashes de nombres de archivo para activos est\u00e1ticos y <em>Purga<\/em>\/Invalidaci\u00f3n para HTML y API. De este modo se evitan las \u201etormentas de purga\u201c y se mantiene un tiempo de actualizaci\u00f3n corto. Tambi\u00e9n es importante tener una clave de cach\u00e9 coherente en la CDN (incluyendo host, ruta, par\u00e1metros de consulta y cabeceras Vary relevantes). Para los par\u00e1metros de consulta, diferencio conscientemente entre par\u00e1metros sem\u00e1nticos (por ejemplo, ?lang=) y par\u00e1metros puramente relacionados con el seguimiento; ignoro estos \u00faltimos en la clave de cach\u00e9 para evitar la fragmentaci\u00f3n. De este modo, la cadena de cach\u00e9 del navegador, proxy intermedio y CDN se mantiene transparente y predecible.<\/p>\n\n<h2>304 en detalle: Actualizar correctamente la cabecera y los metadatos<\/h2>\n\n<p>Tambi\u00e9n un <strong>304<\/strong>-La respuesta contiene metadatos importantes. Entrego Fecha, Cache-Control, ETag\/Last-Modified y -si es relevante- Expires y Vary de nuevo para que el cliente pueda actualizar sus entradas de cach\u00e9. Content-Type y Content-Encoding no tienen que repetirse necesariamente, pero pueden contribuir a la claridad. Es importante que el 304 no contenga un cuerpo de carga \u00fatil y que env\u00ede validadores coherentes: Cambiar el ETag en el 304 sin cambiar la representaci\u00f3n lleva a confusi\u00f3n. Si se ajustan las directrices (por ejemplo, una max-age m\u00e1s larga), el cliente puede adoptar los metadatos sin tener que recargar el cuerpo: una peque\u00f1a palanca con un gran impacto en el rendimiento percibido.<\/p>\n\n<h2>Estrategias de prueba y depuraci\u00f3n para una validaci\u00f3n limpia<\/h2>\n\n<p>Compruebo espec\u00edficamente los siguientes puntos en DevTools: <em>desde la cach\u00e9 de disco<\/em> vs. <em>de la memoria cach\u00e9<\/em> vs. <em>revalidado<\/em>; Estado 200\/304; cabecera Age en respuestas de cach\u00e9s compartidas; coherencia ETag\/Last-Modified y el efecto de Vary. Para realizar pruebas reproducibles, desactivo temporalmente la cach\u00e9 del navegador o utilizo un modo privado. Del lado del servidor, eval\u00fao los registros en funci\u00f3n de la proporci\u00f3n 200\/304, el tama\u00f1o medio de la respuesta y la utilizaci\u00f3n de la CPU. Las se\u00f1ales de alerta son, por ejemplo, muchas respuestas 200 a recursos con intervalos de cambio cortos (falta de validadores), bucles de revalidaci\u00f3n (tiempos desviados\/desviaci\u00f3n del reloj) o un n\u00famero inusualmente grande de variantes por URL (Vary excesivo). Utilizo pruebas de carga para comprobar c\u00f3mo se comportan s-maxage, stale-while-revalidate e if-none-match bajo presi\u00f3n, y ajusto las directivas hasta que el rendimiento y la latencia coinciden.<\/p>\n\n<h2>Casos extremos y valores por defecto robustos<\/h2>\n\n<p>No todos los recursos tienen reglas de cambio claras. Establezco valores predeterminados prudentes para sitemaps, feeds o cuadros de mando generados: <em>no-cache<\/em> m\u00e1s ETag\/Last-Modified. Con relojes inestables entre sistemas upstream, evito las comparaciones r\u00edgidas de segundos y prefiero ETags independientes de las marcas de tiempo. Si la compresi\u00f3n es variable (diferentes niveles de gzip), incluyo el resultado de la compresi\u00f3n en la generaci\u00f3n de ETags o cambio a ETags d\u00e9biles. Y si los clientes solicitan sin validadores, env\u00edo se\u00f1ales claras: O bien frescura clara (max-age\/immutable) o validaci\u00f3n clara (no-cache + ETag). Estos <em>valores por defecto robustos<\/em> garantizar que ni siquiera los clientes incompletos o defectuosos provoquen picos de carga no deseados.<\/p>\n\n<h2>Breve resumen<\/h2>\n\n<p>Conectar solicitudes condicionales <strong>Velocidad<\/strong> y puntualidad haciendo que los clientes s\u00f3lo recuperen recursos completos cuando el contenido ha cambiado. Utilizo el control de cach\u00e9 para mantener la frescura, combino la \u00faltima modificaci\u00f3n y ETag para realizar comprobaciones fiables y respondo sistem\u00e1ticamente con 304 si se cumplen las condiciones. A\u00edslo los contenidos personalizados y confidenciales con private o no-store para que ning\u00fan dato acabe en cach\u00e9s compartidas. Las mediciones en DevTools, los registros y las m\u00e9tricas me muestran d\u00f3nde puedo ampliar los plazos o ajustar la l\u00f3gica de validaci\u00f3n. Si piensas en estos componentes b\u00e1sicos de forma conjunta, conseguir\u00e1s p\u00e1ginas m\u00e1s r\u00e1pidas, una menor carga del servidor y un <strong>m\u00e1s redondo<\/strong> Experiencia de usuario sin desperdiciar datos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Aprenda c\u00f3mo las peticiones condicionales HTTP y la validaci\u00f3n de cach\u00e9 con ETag, Last-Modified y Cache-Control optimizan el almacenamiento en cach\u00e9 de su navegador y aumentan el rendimiento.<\/p>","protected":false},"author":1,"featured_media":19514,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[834],"tags":[],"class_list":["post-19521","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plesk-webserver-plesk-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"91","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"HTTP Conditional","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"19514","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/19521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/comments?post=19521"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/19521\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/19514"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=19521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=19521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=19521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}