{"id":16581,"date":"2026-01-05T18:23:33","date_gmt":"2026-01-05T17:23:33","guid":{"rendered":"https:\/\/webhosting.de\/http-cache-headers-sabotieren-caching-cachefix\/"},"modified":"2026-01-05T18:23:33","modified_gmt":"2026-01-05T17:23:33","slug":"http-cache-headers-sabotear-el-almacenamiento-en-cache-cachefix","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/http-cache-headers-sabotieren-caching-cachefix\/","title":{"rendered":"Encabezados de cach\u00e9 HTTP: c\u00f3mo sabotean su estrategia de almacenamiento en cach\u00e9"},"content":{"rendered":"<p>Los encabezados de cach\u00e9 HTTP determinan c\u00f3mo los navegadores y los proxys almacenan temporalmente el contenido; si se configuran incorrectamente, ralentizan el tiempo de carga y aumentan notablemente la carga del servidor. En este art\u00edculo, mostrar\u00e9 c\u00f3mo peque\u00f1os errores en los encabezados pueden afectar a su <strong>Estrategia de almacenamiento en cach\u00e9<\/strong> sabotear y c\u00f3mo puede ganar velocidad de forma cuantificable con unos pocos ajustes.<\/p>\n\n<h2>Puntos centrales<\/h2>\n\n<p>Las siguientes afirmaciones clave me ayudan a comprobar r\u00e1pidamente los encabezados HTTP y a mantenerlos limpios de forma permanente.<\/p>\n<ul>\n  <li><strong>TTL<\/strong> Elegir correctamente: almacenar en cach\u00e9 los activos est\u00e1ticos durante mucho tiempo, HTML durante poco tiempo y de forma controlada.<\/li>\n  <li><strong>Validaci\u00f3n<\/strong> Utilizar: ETag y Last-Modified reducen las solicitudes innecesarias.<\/li>\n  <li><strong>Conflictos<\/strong> Evitar: los encabezados Origin y CDN deben coincidir.<\/li>\n  <li><strong>Control de versiones<\/strong> Usar: los hash de archivos permiten estrategias de cach\u00e9 agresivas.<\/li>\n  <li><strong>Monitoreo<\/strong> Establecer: medir la tasa de visitas y aumentarla sistem\u00e1ticamente.<\/li>\n<\/ul>\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\/01\/http-cache-header-debug-3471.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Lo que realmente controlan los encabezados de cach\u00e9 HTTP<\/h2>\n\n<p>Cache-Control, Expires, ETag y Last-Modified determinan si los contenidos son recientes, cu\u00e1nto tiempo son v\u00e1lidos y cu\u00e1ndo los solicita el navegador. Con <strong>max-age<\/strong> defino la vida \u00fatil, con public\/private la ubicaci\u00f3n de almacenamiento en el navegador o en cach\u00e9s compartidas. Directivas como <strong>no-store<\/strong> impiden completamente el almacenamiento, no-cache obliga a una revalidaci\u00f3n antes de su uso. Para archivos est\u00e1ticos, vale la pena una validez de un a\u00f1o, HTML obtiene tiempos cortos con revalidaci\u00f3n inteligente. Adem\u00e1s, me baso en <strong>inmutable<\/strong>, si se garantiza que los archivos permanecen inalterados mediante la versi\u00f3n hash.<\/p>\n\n<p>Este control afecta directamente a la latencia, el ancho de banda y la carga del servidor. Un aumento de <strong>Tasa HIT<\/strong> Reduce los tiempos de espera y el trabajo administrativo. Adem\u00e1s, optimizo la transferencia con <a href=\"https:\/\/webhosting.de\/es\/configuracion-de-compresion-http-optimizada-para-mejorar-el-rendimiento\/\">Compresi\u00f3n HTTP<\/a>, para que se tengan que transportar menos bytes. Si se hace una separaci\u00f3n clara, se alivia la carga de las CDN, los proxys y las cach\u00e9s de los navegadores por igual. As\u00ed es como consigo un funcionamiento fluido. <strong>Tiempos de carga<\/strong> a trav\u00e9s de.<\/p>\n\n<h2>Planificaci\u00f3n TTL en la pr\u00e1ctica<\/h2>\n\n<p>El TTL adecuado se deriva de la frecuencia de cambio, el riesgo y la estrategia de recuperaci\u00f3n. Para los activos con hash de archivo, establezco 12 meses, porque controlo los cambios a trav\u00e9s de nuevos nombres de archivo. Para HTML, me baso en la din\u00e1mica del contenido: las p\u00e1ginas de inicio o las p\u00e1ginas de categor\u00edas suelen permanecer actualizadas entre 1 y 5 minutos, mientras que las p\u00e1ginas detalladas con comentarios lo est\u00e1n durante menos tiempo. Es importante un <strong>Ruta de reversi\u00f3n<\/strong>: Si se produce un error en tiempo real, necesito una purga r\u00e1pida (Edge) y una revalidaci\u00f3n forzada (must-revalidate) para los navegadores. Las respuestas de la API reciben TTL cortos, pero con <em>estable<\/em>-Directivas para que los usuarios vean las respuestas en caso de error. Documento estos perfiles por ruta o tipo de archivo y los integro en el proceso de compilaci\u00f3n\/implementaci\u00f3n para que ning\u00fan cambio \u201esilencioso\u201c anule involuntariamente la pol\u00edtica de actualizaci\u00f3n.<\/p>\n\n<h2>C\u00f3mo las configuraciones err\u00f3neas sabotean la estrategia<\/h2>\n\n<p>Demasiado corto <strong>TTLs<\/strong> como max-age=60 segundos en CSS, JS o im\u00e1genes, obligan a realizar consultas constantes y destruyen las ventajas de la cach\u00e9. Un global <strong>no-cache<\/strong> En las configuraciones CMS, incluso cuando gran parte de una p\u00e1gina es estable, se produce una ralentizaci\u00f3n. Si faltan ETag o Last-Modified, el navegador vuelve a cargar los archivos por completo en lugar de comprobarlos de forma inteligente. Las cadenas de consulta superfluas generan fragmentaci\u00f3n. <strong>Claves de cach\u00e9<\/strong> y reducen significativamente la tasa de aciertos. Si Origin env\u00eda no-cache, la CDN ignora las cach\u00e9s de borde, lo que da como resultado rutas m\u00e1s largas y una mayor carga del servidor.<\/p>\n\n<p>El resultado lo veo en las m\u00e9tricas: m\u00e1s solicitudes, mayor <strong>tiempo de CPU<\/strong> y tiempos de respuesta cada vez mayores. Durante los picos de tr\u00e1fico, aumenta el riesgo de que se produzcan tiempos de espera. Al mismo tiempo, crece el consumo de ancho de banda sin que los usuarios noten ninguna ventaja. Con solo echar un vistazo a DevTools, reconozco r\u00e1pidamente estos patrones. Entonces, lo primero que hago es <strong>Control de la cach\u00e9<\/strong>, antes de aumentar los recursos del servidor.<\/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\/01\/httpcachemeeting_7294.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Recomendaciones por tipo de contenido: las directivas adecuadas<\/h2>\n\n<p>Dependiendo del tipo de contenido, utilizo diferentes <strong>Encabezado<\/strong>, para que las cach\u00e9s funcionen correctamente y los usuarios vean datos actualizados. La siguiente tabla muestra perfiles probados que utilizo en proyectos.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Contenido<\/th>\n      <th>Control de cach\u00e9 recomendado<\/th>\n      <th>Validez<\/th>\n      <th>Nota<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>JS\/CSS\/Im\u00e1genes (versiones)<\/td>\n      <td>p\u00fablico, max-age=31536000, <strong>inmutable<\/strong><\/td>\n      <td>12 meses<\/td>\n      <td>Utilizar nombre de archivo con hash (por ejemplo, app.abc123.js)<\/td>\n    <\/tr>\n    <tr>\n      <td>Archivos de fuentes (woff2)<\/td>\n      <td>p\u00fablico, max-age=31536000, inmutable<\/td>\n      <td>12 meses<\/td>\n      <td>Tenga en cuenta CORS si se carga desde CDN.<\/td>\n    <\/tr>\n    <tr>\n      <td>HTML (p\u00fablico)<\/td>\n      <td>p\u00fablico, max-age=300, stale-while-revalidate=86400<\/td>\n      <td>5 minutos<\/td>\n      <td>Corto <strong>Frescura<\/strong>, recarga suave en segundo plano<\/td>\n    <\/tr>\n    <tr>\n      <td>HTML (personalizado)<\/td>\n      <td>privado, max-age=0, sin cach\u00e9<\/td>\n      <td>revalidaci\u00f3n<\/td>\n      <td>No se permite compartir en cach\u00e9s compartidas.<\/td>\n    <\/tr>\n    <tr>\n      <td>APIs<\/td>\n      <td>p\u00fablico, max-age=60\u2013300, stale-if-error=86400<\/td>\n      <td>1-5 minutos<\/td>\n      <td>Caso de error con <strong>estable<\/strong> amortiguar<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Estos perfiles cubren sitios t\u00edpicos y ayudan a crear r\u00e1pidamente <strong>Reglas<\/strong> Es importante establecer un sistema de versiones claro para los activos, de modo que los valores max-age largos no proporcionen archivos obsoletos. El HTML tiene una vida corta y se actualiza mediante la revalidaci\u00f3n. Las API tienen tiempos cortos y una red de seguridad a trav\u00e9s de stale-if-error. De este modo, las p\u00e1ginas permanecen accesibles incluso en caso de fallos. <strong>utilizable<\/strong>.<\/p>\n\n<h2>Almacenar correctamente los c\u00f3digos de error y las redirecciones<\/h2>\n\n<p>Los redireccionamientos y las p\u00e1ginas de error merecen sus propias reglas. <strong>301\/308<\/strong> (permanentes) pueden almacenarse en cach\u00e9 durante mucho tiempo en CDN y navegadores; aqu\u00ed suelo establecer plazos de d\u00edas a semanas para evitar cadenas de redireccionamiento. <strong>302\/307<\/strong> (temporal) reciben TTL cortos, de lo contrario, los estados temporales se \u201econgelan\u201c. Para 404\/410, vale la pena una frescura moderada (por ejemplo, de minutos a horas), para que los bots y los usuarios no realicen consultas constantemente; en el caso de contenidos que cambian con frecuencia, considero que 404 es m\u00e1s bien corto. <strong>5xx<\/strong>Por norma general, no almaceno los errores en cach\u00e9, sino que utilizo stale-if-error para entregar temporalmente copias que funcionan. De este modo, la plataforma se mantiene estable y reduzco la carga de re-renderizaci\u00f3n en rutas solicitadas con frecuencia pero que faltan.<\/p>\n\n<h2>Usar correctamente la validaci\u00f3n: ETag y Last-Modified<\/h2>\n\n<p>Con <strong>ETag<\/strong> y Last-Modified, el navegador comprueba si realmente es necesario volver a cargar un recurso. El cliente env\u00eda If-None-Match o If-Modified-Since y, en el mejor de los casos, el servidor responde con 304 en lugar de 200. De este modo, ahorro transferencia y reduzco el <strong>Tr\u00e1fico<\/strong> Claro. Para archivos est\u00e1ticos, a menudo basta con Last-Modified, mientras que para contenidos generados din\u00e1micamente utilizo ETags. Importante: generaci\u00f3n coherente de ETag para que las cach\u00e9s reconozcan los resultados.<\/p>\n\n<p>Me gusta combinar la validaci\u00f3n con <strong>estable<\/strong>-Directivas. stale-while-revalidate mantiene las p\u00e1ginas r\u00e1pidas mientras se actualizan en segundo plano. stale-if-error garantiza la fiabilidad en caso de problemas con el backend. De este modo, la experiencia del usuario se mantiene estable y se protegen los servidores. Los siguientes fragmentos muestran los ajustes t\u00edpicos que utilizo.<\/p>\n\n<pre><code>Header set Cache-Control \"public, max-age=31536000, immutable\"\n \/etc\/nginx\/conf.d\/caching.conf location ~* .(css|js|png|jpg|svg|woff2)$ { add_header Cache-Control \"public, max-age=31536000, immutable\"; }\n<\/code><\/pre>\n\n<h2>Directivas avanzadas y detalles<\/h2>\n\n<p>Adem\u00e1s de max-age, utilizo espec\u00edficamente <strong>s-maxage<\/strong>, para llenar las cach\u00e9s de borde durante m\u00e1s tiempo que los navegadores. De este modo, la CDN puede durar, por ejemplo, 1 hora, mientras que los clientes vuelven a validar despu\u00e9s de 5 minutos. <strong>debe revalidarse<\/strong> Obliga a los navegadores a comprobar las copias caducadas antes de utilizarlas, lo cual es importante en \u00e1reas relevantes para la seguridad. <strong>proxy-revalidar<\/strong> dirige la obligaci\u00f3n a los cach\u00e9s compartidos. Con <strong>sin transformaci\u00f3n<\/strong> Evito que los proxys modifiquen im\u00e1genes o compresi\u00f3n sin preguntar. Para una amplia compatibilidad, adem\u00e1s de Cache-Control, env\u00edo opcionalmente un <strong>Expira en<\/strong>-Fecha en el futuro (activos) o en el pasado (HTML), aunque las cach\u00e9s modernas tienen en cuenta principalmente el control de cach\u00e9. En las estrategias CDN, separo las reglas del navegador y las reglas perif\u00e9ricas: public + max-age para los clientes, m\u00e1s s-maxage\/Surrogate-Control para el borde. Esta divisi\u00f3n maximiza las tasas de HIT sin riesgos de obsolescencia en los dispositivos finales.<\/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\/01\/http-cache-header-fehler-3017.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Interacci\u00f3n con CDN y cach\u00e9s perif\u00e9ricas<\/h2>\n\n<p>Una CDN respeta <strong>Encabezado de origen<\/strong> \u2013 Las directivas incorrectas en el origen anulan las cach\u00e9s globales. Para las cach\u00e9s compartidas, establezco public y, si es necesario, s-maxage, para que los bordes duren m\u00e1s que los navegadores. Surrogate-Control puede proporcionar reglas adicionales para las cach\u00e9s de borde. Si no-cache llega al origen, la CDN rechaza la solicitud deseada. <strong>Almacenamiento<\/strong>. Por eso coordino deliberadamente la estrategia del navegador y la CDN.<\/p>\n\n<p>En los nuevos proyectos, tambi\u00e9n examino las estrategias de carga previa. Con <a href=\"https:\/\/webhosting.de\/es\/http3-push-precarga-optimizacion-del-rendimiento-sitio-web-zoom\/\">HTTP\/3 Push y precarga<\/a> Cargo los activos cr\u00edticos con antelaci\u00f3n y reduzco los bloqueos de renderizado. Esta t\u00e9cnica no sustituye al almacenamiento en cach\u00e9, sino que lo complementa. Junto con los TTL largos para los activos, el rendimiento inicial mejora notablemente. As\u00ed es como trabajo en el rango de la red antes de que el <strong>Servidor<\/strong> ni siquiera suda.<\/p>\n\n<h2>La estrategia Vary en detalle<\/h2>\n\n<p><strong>Variar<\/strong> decide qu\u00e9 encabezados de solicitud generan nuevas variantes. Yo mantengo Vary al m\u00ednimo: para HTML, normalmente Accept-Encoding (compresi\u00f3n) y, si es necesario, idioma; para activos, idealmente ninguno. Un Vary demasiado amplio (por ejemplo, User-Agent) destruye la tasa de visitas. Al mismo tiempo, es necesario <strong>ETags<\/strong> el <em>espec\u00edfico de la representaci\u00f3n<\/em> Reflejar la variante: si entrego gzip o br, se aplican los ETags por variante de codificaci\u00f3n y establezco Vary: Accept-Encoding. Si utilizo ETags d\u00e9biles (W\/), me aseguro de generarlos de forma coherente, de lo contrario se producen 200 innecesarios. Por lo general, las fuentes o las im\u00e1genes deben funcionar sin Vary; as\u00ed las claves permanecen estables. Mi principio: primero definir qu\u00e9 variantes son necesarias desde el punto de vista t\u00e9cnico y solo entonces ampliar Vary, nunca al rev\u00e9s.<\/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\/01\/httpcacheoffice0983.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitorizaci\u00f3n y diagn\u00f3stico en DevTools<\/h2>\n\n<p>Siempre empiezo en el <strong>Pesta\u00f1a Red<\/strong> las herramientas del navegador. All\u00ed puedo ver si las respuestas provienen de la cach\u00e9, cu\u00e1nto tiempo tienen y qu\u00e9 directivas se aplican. Las columnas \u00abAge\u00bb, \u00abCache-Control\u00bb y \u00abStatus\u00bb ayudan a realizar comprobaciones r\u00e1pidas. Una tasa de aciertos inferior a 50% indica que es necesario actuar, mientras que los valores objetivo de 80% y superiores son realistas. En caso de valores at\u00edpicos, primero compruebo los encabezados correspondientes.<\/p>\n\n<p>Herramientas como PageSpeed o GTmetrix confirmaron mis pruebas locales. <strong>Medidas<\/strong>. A continuaci\u00f3n, comparo antes y despu\u00e9s de los cambios para cuantificar los beneficios. Si se a\u00f1aden grandes cantidades de transferencia, activo sistem\u00e1ticamente la compresi\u00f3n moderna. De este modo, ahorro m\u00e1s milisegundos. As\u00ed, justifico cada ajuste con datos concretos. <strong>cifras<\/strong>.<\/p>\n\n<h2>Comprobaciones automatizadas y CI<\/h2>\n\n<p>Para evitar que las reglas se deterioren, incorporo comprobaciones de encabezados en la CI. Defino perfiles objetivo por ruta y realizo comprobaciones aleatorias en cada compilaci\u00f3n contra el entorno de pruebas. A menudo basta con comprobaciones simples de shell:<\/p>\n\n<pre><code># Ejemplo: directivas esperadas para activos versionados curl -sI https:\/\/example.org\/static\/app.abc123.js | grep -i \"cache-control\" # Vigencia y revalidaci\u00f3n esperadas para HTML\ncurl -sI https:\/\/example.org\/ | egrep -i \"cache-control|etag|last-modified\" # Inspeccionar el encabezado Age y el estado de la cach\u00e9 (si est\u00e1 disponible) curl -sI https:\/\/example.org\/styles.css | egrep -i \"age|cache-status|x-cache\"\n<\/code><\/pre>\n\n<p>En combinaci\u00f3n con pruebas sint\u00e9ticas, planifico \u201eauditor\u00edas de encabezados\u201c peri\u00f3dicas. Los resultados se incorporan al c\u00f3digo de la infraestructura. De este modo, se mantiene <strong>Pol\u00edticas<\/strong> Estable, independientemente de qui\u00e9n haya realizado los \u00faltimos cambios en el CMS, la CDN o la configuraci\u00f3n del servidor.<\/p>\n\n<h2>Optimizaci\u00f3n del alojamiento: almacenamiento en cach\u00e9 de p\u00e1ginas, objetos y c\u00f3digos de operaci\u00f3n<\/h2>\n\n<p>Adem\u00e1s de las cach\u00e9s del navegador y CDN, apuesto por <strong>Cach\u00e9s del servidor<\/strong>. El almacenamiento en cach\u00e9 de p\u00e1ginas proporciona p\u00e1ginas HTML completas, el almacenamiento en cach\u00e9 de objetos almacena los resultados de la base de datos y OPcache se ocupa del c\u00f3digo byte PHP. Estas capas alivian considerablemente la carga del backend cuando los encabezados est\u00e1n configurados correctamente. Solo la combinaci\u00f3n de bordes r\u00e1pidos, TTL saludables y cach\u00e9s de servidor proporciona valores m\u00e1ximos reales. De esta manera, mantengo estables los tiempos de respuesta, incluso cuando <strong>Tr\u00e1fico<\/strong> aumenta.<\/p>\n\n<p>La siguiente visi\u00f3n general del mercado muestra lo que tengo en cuenta a la hora de elegir un servicio de alojamiento. Una tasa de visitas elevada, la disponibilidad de Redis y un buen precio son los factores que determinan mi elecci\u00f3n.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Proveedor de alojamiento<\/th>\n      <th>Puntuaci\u00f3n PageSpeed<\/th>\n      <th>Compatibilidad con Redis<\/th>\n      <th>Precio (inicial)<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>webhoster.de<\/td>\n      <td>98\/100<\/td>\n      <td>S\u00ed<\/td>\n      <td>4,99 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Otro1<\/td>\n      <td>92\/100<\/td>\n      <td>Opcional<\/td>\n      <td>6,99 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Otro2<\/td>\n      <td>89\/100<\/td>\n      <td>No<\/td>\n      <td>5,99 \u20ac<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\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\/01\/entwickler_httpcache_7291.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Estrategias de invalidaci\u00f3n y purga<\/h2>\n\n<p>La creaci\u00f3n de cach\u00e9 es solo la mitad del trabajo: la <strong>Invalidaci\u00f3n<\/strong> decide sobre la seguridad y la agilidad. En el caso de los activos, realizo cambios mediante hash de archivos, por lo que no es necesario realizar purgas. Para HTML y API, planifico purgas espec\u00edficas: despu\u00e9s de la implementaci\u00f3n (rutas cr\u00edticas), despu\u00e9s de la publicaci\u00f3n (solo p\u00e1ginas afectadas) o despu\u00e9s de los indicadores de caracter\u00edsticas. Me gusta admitir cach\u00e9s de borde mediante etiquetas\/claves para <em>Grupos<\/em> en lugar de eliminar rutas individualmente. Siempre que es posible, utilizo \u201eSoft Purge\u201c: los contenidos se marcan inmediatamente como \u201eobsoletos\u201c y solo se vuelven a validar en la siguiente solicitud. De este modo, evito picos de carga debido a recuperaciones simult\u00e1neas. Es importante realizar un mapeo organizado: \u00bfqu\u00e9 eventos desencadenan qu\u00e9 purga? Esta l\u00f3gica debe versionarse en la plataforma.<\/p>\n\n<h2>Seguridad y protecci\u00f3n de datos: p\u00fablico frente a privado<\/h2>\n\n<p>Las p\u00e1ginas personalizadas pertenecen al <strong>Cach\u00e9 privado<\/strong> del navegador, no en cach\u00e9s compartidas. Por eso establezco private, max-age=0 o no-cache para este tipo de contenidos. Las p\u00e1ginas HTML p\u00fablicas pueden obtener public con una frescura breve. Si presto atenci\u00f3n a las cookies en la solicitud, el contenido permanece claramente separado. De este modo evito que usuarios ajenos accedan involuntariamente <strong>Datos<\/strong> otros ven.<\/p>\n\n<p>Al mismo tiempo, aplico reglas estrictas para las \u00e1reas de pago o cuentas. no-store impide cualquier almacenamiento de respuestas sensibles. Para el resto del sitio, sigo siendo generoso para garantizar un buen rendimiento. Esta clara separaci\u00f3n mantiene la plataforma r\u00e1pida y segura. Documento la <strong>Perfiles<\/strong>, para que todos los participantes mantengan la coherencia.<\/p>\n\n<h2>Comprender el almacenamiento en cach\u00e9 heur\u00edstico<\/h2>\n\n<p>Si faltan Cache-Control y Expires, las cach\u00e9s acceden a <strong>heur\u00edstica<\/strong> atr\u00e1s, aproximadamente un porcentaje del tiempo transcurrido desde la \u00faltima modificaci\u00f3n. Esto da lugar a resultados dif\u00edciles de reproducir y a una frescura variable. Evito estos automatismos marcando expl\u00edcitamente cada ruta relevante con Cache-Control. Cuando Last-Modified es impreciso (por ejemplo, en plantillas din\u00e1micas), prefiero utilizar ETags. De este modo, controlo activamente la frescura y obtengo m\u00e9tricas estables en todos los clientes.<\/p>\n\n<h2>Solicitudes de rango y archivos grandes<\/h2>\n\n<p>Para medios y descargas, reproducir <strong>alcance<\/strong>Las solicitudes (206 Partial Content) desempe\u00f1an un papel importante. Activo Accept-Ranges y proporciono ETags\/Last-Modified consistentes para que los navegadores puedan reutilizar partes de forma limpia. En el caso de los segmentos de v\u00eddeo versionados (HLS\/DASH), establezco TTL largos; los manifiestos en s\u00ed mismos siguen siendo ef\u00edmeros. Importante: manejar correctamente If-Range para que las sub\u00e1reas no den lugar a estados mixtos obsoletos cuando se producen cambios. Para contenidos sensibles sigue aplic\u00e1ndose lo siguiente: no almacenar con no-store, incluso si Range est\u00e1 en juego.<\/p>\n\n<h2>Solucionar r\u00e1pidamente los errores frecuentes: mi libro de jugadas<\/h2>\n\n<p>Empiezo con un inventario de encabezados: \u00bfCu\u00e1les? <strong>directivas<\/strong> \u00bfQu\u00e9 proporciona Origin y qu\u00e9 cambia la CDN? A continuaci\u00f3n, defino perfiles TTL por tipo de contenido. Los activos versionados tienen un a\u00f1o, el HTML cinco minutos m\u00e1s revalidaci\u00f3n. Activo ETag\/Last-Modified siempre que tiene sentido. A continuaci\u00f3n, compruebo si hay par\u00e1metros Vary o Query innecesarios que <strong>Tasa HIT<\/strong> Pulse.<\/p>\n\n<p>En el siguiente paso, me ocupar\u00e9 de los detalles de red fuera de la cach\u00e9. Un incorrecto <a href=\"https:\/\/webhosting.de\/es\/el-encabezado-charset-ralentiza-el-rendimiento-del-servidor-del-sitio-web\/\">Encabezado de juego de caracteres<\/a> o la falta de compresi\u00f3n tambi\u00e9n cuesta tiempo. Despu\u00e9s vuelvo a medir: DevTools, pruebas sint\u00e9ticas y, si es necesario, monitorizaci\u00f3n de usuarios reales. Si los valores son correctos, congelo las reglas en la configuraci\u00f3n y las mantengo versionadas. As\u00ed crece la <strong>calidad<\/strong> Paso a paso.<\/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\/01\/http-cache-serverraum-8123.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Brevemente resumido<\/h2>\n\n<p>Con correcto <strong>Encabezados HTTP<\/strong> Controlo qu\u00e9 se almacena, d\u00f3nde y durante cu\u00e1nto tiempo, lo que me permite ahorrar tiempo y recursos. Los TTL largos para los activos versionados, los tiempos cortos m\u00e1s la revalidaci\u00f3n para HTML y las directivas stale significativas aportan velocidad y resiliencia. Las claves de cach\u00e9 limpias, el versionado coherente y las reglas claras para p\u00fablico\/privado evitan los obst\u00e1culos t\u00edpicos. La supervisi\u00f3n proporciona pruebas y muestra las lagunas restantes. Quien proceda as\u00ed, eleva el <strong>Actuaci\u00f3n<\/strong> notable y estable.<\/p>","protected":false},"excerpt":{"rendered":"<p>Los encabezados de cach\u00e9 HTTP sabotean su estrategia de almacenamiento en cach\u00e9 debido a una configuraci\u00f3n incorrecta. \u00a1Aprenda a optimizar el alojamiento para obtener el m\u00e1ximo rendimiento!<\/p>","protected":false},"author":1,"featured_media":16574,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[834],"tags":[],"class_list":["post-16581","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":"1462","_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 Cache Headers","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":"16574","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/16581","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=16581"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/16581\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/16574"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=16581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=16581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=16581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}