diff options
Diffstat (limited to 'files/es/web/http/headers/cache-control/index.html')
-rw-r--r-- | files/es/web/http/headers/cache-control/index.html | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/files/es/web/http/headers/cache-control/index.html b/files/es/web/http/headers/cache-control/index.html new file mode 100644 index 0000000000..64d33e766e --- /dev/null +++ b/files/es/web/http/headers/cache-control/index.html @@ -0,0 +1,241 @@ +--- +title: Cache-Control +slug: Web/HTTP/Headers/Cache-Control +tags: + - Cache-Control + - Encabezado general + - HTTP + - Referencia + - encabezado HTTP +translation_of: Web/HTTP/Headers/Cache-Control +--- +<div>{{HTTPSidebar}}</div> + +<p><span class="seoSummary">El encabezado HTTP <strong><code>Cache-Control</code></strong> especifica <em>directivas</em> (instrucciones) para <a href="/en-US/docs/Web/HTTP/Caching">almacenar temporalmente (caching)</a> tanto en peticiones como en respuestas. Una directiva dada en una petición no significa que la misma directiva estar en la respuesta.</span></p> + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de encabezado</th> + <td>{{Glossary("General header", "Encabezado general")}}</td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name", "nombre prohibido del encabezado")}}</th> + <td>no</td> + </tr> + <tr> + <th scope="row">{{Glossary("CORS-safelisted response header", "Respuesta del encabezado CORS-safelisted")}}</th> + <td>yes</td> + </tr> + </tbody> +</table> + +<h2 id="Sintaxis">Sintaxis</h2> + +<p>Las directivas para almacenamiento temporal siguen las siguientes reglas para ser válidas:</p> + +<ul> + <li>Insensible a mayúsculas, pero las minúsculas son recomendadas.</li> + <li>Directivas múltiples son separadas por comas.</li> + <li>Algunas directivas tienen un argumento opcional, lo cual puede ser tanto un <em>token</em> o una <em>cadena-citada.</em> (Ver la especificación para definiciones)</li> +</ul> + +<h3 id="Directivas_de_solicitud_de_cache">Directivas de solicitud de cache</h3> + +<p>Las directivas estándar <code>Cache-Control</code> que pueden ser usadas por el cliente en una solicitud HTTP.</p> + +<pre class="syntaxbox notranslate">Cache-Control: max-age=<seconds> +Cache-Control: max-stale[=<seconds>] +Cache-Control: min-fresh=<seconds> +Cache-Control: no-cache +Cache-Control: no-store +Cache-Control: no-transform +Cache-Control: only-if-cached +</pre> + +<h3 id="Directivas_de_solicitud_de_cache_2">Directivas de solicitud de cache</h3> + +<p>Las diretivas estándar <code>Cache-Control</code> que pueden ser usadas por el servidor en una respuesta HTTP.</p> + +<pre class="syntaxbox notranslate">Cache-Control: must-revalidate +Cache-Control: no-cache +Cache-Control: no-store +Cache-Control: no-transform +Cache-Control: public +Cache-Control: private +Cache-Control: proxy-revalidate +Cache-Control: max-age=<seconds> +Cache-Control: s-maxage=<seconds> +</pre> + +<h3 id="Directivas_de_extensión_de_Cache-Control">Directivas de extensión de Cache-Control</h3> + +<p>Las directivas de extensión <code>Cache-Control</code> no forman parte de la base del documento estandar para cacheo HTTP. Revisé la <a href="#Browser_compatibility">tabla de compatibilidad</a> para ver su soporte, los agentes de usuario que no reconocen estas directivas las ignorarán.</p> + +<pre class="syntaxbox notranslate">Cache-Control: immutable +Cache-Control: stale-while-revalidate=<seconds> +Cache-Control: stale-if-error=<seconds> +</pre> + +<h2 id="Directivas">Directivas</h2> + +<h3 id="Cacheabilidad">Cacheabilidad</h3> + +<ul> + <li>Una respuesta es normalmente cacheado por el navegador si + <ul> + <li>tiene un código de estado <code><a href="/en-US/docs/Web/HTTP/Status/301">301</a></code>, <code><a href="/en-US/docs/Web/HTTP/Status/302">302</a></code>, <code><a href="/en-US/docs/Web/HTTP/Status/307">307</a></code>, <code><a href="/en-US/docs/Web/HTTP/Status/308">308</a></code>, o <code><a href="/en-US/docs/Web/HTTP/Status/410">410</a></code> <strong>y</strong></li> + <li><code>Cache-Control</code> no tiene <code>no-store</code>, o <em>si proxy</em>, no tiene <code>private</code> <strong>y</strong></li> + <li><code><a href="/en-US/docs/Web/HTTP/Headers/Authorization">Authorization</a></code> no esta definido</li> + <li>Cualquiera + <ul> + <li>tiene un código de estado <code><a href="/en-US/docs/Web/HTTP/Status/301">301</a></code>, <code><a href="/en-US/docs/Web/HTTP/Status/302">302</a></code>, <code><a href="/en-US/docs/Web/HTTP/Status/307">307</a></code>, <code><a href="/en-US/docs/Web/HTTP/Status/308">308</a></code>, o <code><a href="/en-US/docs/Web/HTTP/Status/410">410</a></code> <strong>o</strong></li> + <li>tiene <code>public</code>, <code>max-age</code> o <code>s-maxage</code> en <code>Cache-Control</code> <strong>o</strong></li> + <li>tiene definido <code><a href="/en-US/docs/Web/HTTP/Headers/Expires">Expires</a></code></li> + </ul> + </li> + </ul> + </li> +</ul> + +<dl> + <dt><code>public</code></dt> + <dd>La respuesta puede estar almacenada en <em>cualquier</em> memoria cache, incluso si la petición normalmente no es cacheable.</dd> + <dt><code>private</code></dt> + <dd>La respuesta puede estar almacenada sólo por el cache de un <em>navegador</em>, incluso si la petición es normalmente no cacheable. <strong>Si no desea almacenar la respuesta en algún cache, use en su lugar <code>no-store</code>.</strong> <em>Esta directiva no es efectiva previniendo el cacheo al almacenar respuestas.</em></dd> + <dt><code>no-cache</code></dt> + <dd>La respuesta puede estar almacenada por <em>cualquier</em> cache, incluso si la petición es normalmente no cacheable. Sin embargo, la respuesta almacenada DEBE <em>siempre</em> pasar por una validación con el servidor de origen antes de utilizarse, por lo tanto, no se puede usar <code>no-cache</code> en conjunción con <code>immutable</code>. <strong>Si no desea almacenar la respuesta en algún cache, se debe utilizar <code>no-store</code> en su lugar.</strong> <em>Esta directiva no es efectiva para prevenir el cacheo al guardar la respuesta.</em></dd> + <dt><code>no-store</code></dt> + <dd>La respuesta puede <strong>no</strong> ser almacenada en <em>cualquier</em> cache. Aunque otras directivas pueden definirla, ésta es la <em>única directiva que se necesita para prevenir el cacheo de respuestas </em>en navegadores modernos. <code>max-age=0</code> <strong>es implícito</strong>. <strong>Configurando</strong> <code>must-revalidate</code> <strong>no tiene sentido</strong> porque en orden para revalidar se necesita que la respuesta este almacenada en la cache, lo cual <code>no-store</code> previene.</dd> + <dd><strong>No copie y pege el método específico para Intenet Explorer</strong> <code>pre-check=0,post-check=0</code> si lo ve en línea porque es completamente ignorado, confirmado por <a href="https://twitter.com/ericlaw/status/685201170260819968">el tweet de un desarrollador de Edge</a>.</dd> + <dt>Deshabilitando Cache vía Cache-Control</dt> + <dd> + <pre class="example-good notranslate">no-store</pre> + </dd> + <dd> + <pre class="example-bad notranslate">no-cache,no-store,must-revalidate,pre-check=0,post-check=0</pre> + </dd> +</dl> + +<h3 id="Expiración">Expiración</h3> + +<dl> + <dt><code>max-age=<seconds></code></dt> + <dd>La cantidad máxima de tiempo un recurso es considerado reciente. A diferencia de <code>Expires</code>, esta directiva es relativa a el tiempo de la petición.</dd> + <dt><code>s-maxage=<seconds></code></dt> + <dd>Anula el encabezado <code>max-age</code> o el <code>Expires</code>, pero solo para caches compartidos (e.g., proxies). Ignorado por caches privados.</dd> + <dt><code>max-stale[=<seconds>]</code></dt> + <dd>Indica que el cliente aceptará una respuesta tardía. Un valor opciona en segundo indica el límite superior de estancamiento que el cliente aceptará.</dd> + <dt><code>min-fresh=<seconds></code></dt> + <dd>Indica que el cliente quiere una respuesta que será reciente por <em>al menos</em> el número específico de segundos.</dd> + <dt><code>stale-while-revalidate=<seconds></code> {{Experimental_Inline}}</dt> + <dd>Indica que el cliente aceptará una respuesta tardía, mientras asíncronamente revisa por el fondo por una reciente. El valor de los <em>segundos</em> indica que tan largo es el cliente aceptará una respuesta estancada. Ver "<a href="https://web.dev/stale-while-revalidate">Manteniendo las cosas frescas con <code>stale-while-revalidate</code></a>" para más información.</dd> + <dt><code>stale-if-error=<seconds></code> {{Experimental_Inline}}</dt> + <dd>Indica que el cliente aceptará una respuesta tardía si la revisión por una resúesta reciente falla. El valor de los<em> segundos</em> indica cuanto tiempo el cliente aceptará la respuesta tardía después de una expiración inicial.</dd> +</dl> + +<h3 id="Revalidación_y_recarga">Revalidación y recarga</h3> + +<dl> + <dt><code>must-revalidate</code></dt> + <dd>Indica que una vez un recurso se vuelve obsoleto, el cache no debe usar su copia obsoleta sin correctamente <a href="/en-US/docs/Web/HTTP/Caching#Cache_validation">validar</a> en el servidor de origen.</dd> + <dt><code>proxy-revalidate</code></dt> + <dd>Similar a <code>must-revalidate</code>, pero solo para caches compartidos (es decir, proxies). Ignorado por caches privados.</dd> + <dt><code>immutable</code></dt> + <dd>Indica que la respuesta del cuerpo <strong>no debería cambiar</strong> con el tiempo. El recurso, si<em> no ha expirado</em>, no ha cambiado en el servidor y por lo tanto el cliente no debería enviar una revalidación condicional por ello (es decir, <code>If-None-Match</code> o <code>If-Modified-Since</code>) para revisar por actualizaciones, incluso cuando el usuario explícitamente recarga la página. Los clientes que no son consientes de esta extensión las ignoran deacuerdo a la especificación HTTP. En Firefox, <code>immutable</code> solo es respetada en transacciones <code>https://</code>. Para más información, ver también este <a href="https://bitsup.blogspot.de/2016/05/cache-control-immutable.html">árticulo de un blog</a>.</dd> +</dl> + +<h3 id="Otros">Otros</h3> + +<dl> + <dt><code>no-transform</code></dt> + <dd>No hay transformaciones o conversiones deberían hacerse al recurso. Los encabezados Content-Encoding, Content-Range, Content-Type no deben ser modificados por un proxy. Un proxy no transparente o una característica de un navegador como podría ser <a href="https://support.google.com/webmasters/answer/6211428?hl=en">Google's Light Mode</a>, por ejemplo, convierte entre formatos de imagenes con el motivo de guardar espacio del cache o para reducir la cantidad de tráfico en un enlace lento. La directiva <code>no-transform</code> no permite esto.</dd> + <dt><code>only-if-cached</code></dt> + <dd>Definida por el <em>cliente </em>para indicar "no usar la red" para la respuesta. la cache debería ya sea responder usando una respuesta almacenada, o responder con un código de estado <code><a href="/en-US/docs/Web/HTTP/Status/504">504</a></code>. Encabezados condicionales como <code>If-None-Match</code> no deberían ser definidos. No hay efecto si <code>only-if-cached</code> es definido por un servidor como parte de una respuesta.</dd> +</dl> + +<h2 id="Ejemplos">Ejemplos</h2> + +<h3 id="Prevención_de_almacenamiento_en_caché">Prevención de almacenamiento en caché</h3> + +<p>Para desactivar el almacenamiento en caché, puede enviar el siguiente encabezado de respuesta. Además, ver también los encabezados Expires y Pragma.</p> + +<dl> + <dd> + <pre class="example-good brush: http no-line-numbers notranslate">Cache-Control: no-store +</pre> + </dd> + <dd> + <pre class="example-bad brush: http no-line-numbers notranslate">Cache-Control: private,no-cache,no-store,max-age=0,must-revalidate,pre-check=0,post-check=0 +</pre> + </dd> +</dl> + +<h3 id="Almacenando_temporalmente_recursos_estáticos">Almacenando temporalmente recursos estáticos</h3> + +<p>Para los archivos de la aplicación que no cambian, generalmente se puede agregar almacenamiento en caché agresivo enviando el encabezado de respuesta a continuación. Esto incluye, por ejemplo, archivos estáticos servidos por la aplicación, como imágenes, archivos CSS y archivos JavaScript. Además, vea también, el encabezado <code>Expires</code>.</p> + +<dl> + <dd> + <pre class="brush: http no-line-numbers notranslate">Cache-Control: public, max-age=604800, immutable +</pre> + </dd> +</dl> + +<h3 id="Requiriendo_revalidación">Requiriendo revalidación</h3> + +<p>Especificando <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">no-cache</span></font> o <code>max-age=0</code> se indica a los clientes que se puede almacenar temporalmente un recurso y debe revalidarse en cada ocasión antes de utilizarse. Esto significa que las peticiones HTTP ocurren cada vez, pero se pueden saltar la descarga del cuerpo HTTP si el contenido es válido.</p> + +<dl> + <dd> + <pre class="brush: http no-line-numbers notranslate">Cache-Control: no-cache +Cache-Control: no-cache, max-age=0 +Cache-Control: no-cache, max-age=0, stale-while-revalidate=300 +</pre> + </dd> +</dl> + +<h2 id="Especificaciones">Especificaciones</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificaciones</th> + <th scope="col">Estado</th> + <th scope="col">Comentario</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{RFC(8246, "HTTP Immutable Responses")}}</td> + <td><span class="spec-RFC">IETF RFC</span></td> + <td></td> + </tr> + <tr> + <td>{{RFC(7234, "Hypertext Transfer Protocol (HTTP/1.1): Caching")}}</td> + <td><span class="spec-RFC">IETF RFC</span></td> + <td></td> + </tr> + <tr> + <td>{{RFC(5861, "HTTP Cache-Control Extensions for Stale Content")}}</td> + <td><span class="spec-RFC">IETF RFC</span></td> + <td>Definición inicial</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidad_de_los_navegadores">Compatibilidad de los navegadores</h2> + +<p class="hidden">La tabla de compatibilidad en esta página se genera a partir de datos estructurados. Si desea contribuir con los datos, visite <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> y envíenos una solicitud de extracción.</p> + +<p>{{Compat("http.headers.Cache-Control")}}</p> + +<h2 id="Véase_también">Véase también</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/Caching_FAQ">HTTP Caching FAQ</a></li> + <li>Guía: <em><a href="https://csswizardry.com/2019/03/cache-control-for-civilians"><code>Cache-Control</code> para civiles</a></em></li> + <li>{{HTTPHeader("Age")}}</li> + <li>{{HTTPHeader("Expires")}}</li> + <li>{{HTTPHeader("Pragma")}}</li> +</ul> |