diff options
author | jotagarciaz <jotagarciaz@outlook.com> | 2022-03-02 00:14:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-01 18:14:13 -0500 |
commit | 96c4513c7db7a275193742e73a7d3cd8feb401bc (patch) | |
tree | 664b30c66f45fa44d77d7fbc104a9ab776fdba2f /files/es | |
parent | 1318e1e665a77536e3d0c3741371f9a2f798e3d7 (diff) | |
download | translated-content-96c4513c7db7a275193742e73a7d3cd8feb401bc.tar.gz translated-content-96c4513c7db7a275193742e73a7d3cd8feb401bc.tar.bz2 translated-content-96c4513c7db7a275193742e73a7d3cd8feb401bc.zip |
correcting some phrases (#1625)
* correcting some phrases
I make a few changes for make the page more correctly translated
* translating document to spanish
The new information was translated to spanish an changed in to Markdown as it was requested.
* remove index.html
removing index.html as requested
* Update files/es/web/http/headers/cache-control/index.md
fix typo
Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com>
* Update files/es/web/http/headers/cache-control/index.md
Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com>
* Update files/es/web/http/headers/cache-control/index.md
Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com>
* Update files/es/web/http/headers/cache-control/index.md
Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com>
* Update files/es/web/http/headers/cache-control/index.md
Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com>
Co-authored-by: JotaGarciaz <jgarcia@laisladelfaro.com>
Co-authored-by: Anderson Vallejo <48649209+Vallejoanderson@users.noreply.github.com>
Diffstat (limited to 'files/es')
-rw-r--r-- | files/es/web/http/headers/cache-control/index.html | 241 | ||||
-rw-r--r-- | files/es/web/http/headers/cache-control/index.md | 459 |
2 files changed, 459 insertions, 241 deletions
diff --git a/files/es/web/http/headers/cache-control/index.html b/files/es/web/http/headers/cache-control/index.html deleted file mode 100644 index e86c9af249..0000000000 --- a/files/es/web/http/headers/cache-control/index.html +++ /dev/null @@ -1,241 +0,0 @@ ---- -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>{{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> diff --git a/files/es/web/http/headers/cache-control/index.md b/files/es/web/http/headers/cache-control/index.md new file mode 100644 index 0000000000..39d0715bb6 --- /dev/null +++ b/files/es/web/http/headers/cache-control/index.md @@ -0,0 +1,459 @@ +--- +title: Cache-Control +slug: Web/HTTP/Headers/Cache-Control +browser-compat: http.headers.Cache-Control +translation_of: Web/HTTP/Headers/Cache-Control +--- +{{HTTPSidebar}} + +El encabezado HTTP **`Cache-Control`** contiene _directivas_ (instrucciones) — tanto en peticiones como en respuestas — para controlar el almacenamiento temporal [(caching)](/en-US/docs/Web/HTTP/Caching) en navegadores y cachés compartidas (p. ej. Proxies, CDNs). + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Tipo de encabezado</th> + <td> + {{Glossary("Request header","Encabezado de solicitud")}}, + {{Glossary("Response header","Encabezado de respuesta")}} + </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>sí</td> + </tr> + </tbody> +</table> + +## Sintaxis + +Las directivas para almacenamiento temporal siguen las siguientes reglas de validación: + +- Insensible a mayúsculas, — pero las minúsculas son recomendadas, debido a que algunas implementaciones no reconocen las directivas en mayusculas. +- Las multipes directivas son separadas por comas. +- Algunas directivas tienen un argumento opcional. + +### Directivas de cache + +Las directivas `Cache-Control` estándar están definidas a continuación. + +| Request | Response | +| :--------------- | :----------------------- | +| `max-age` | `max-age` | +| `max-stale` | - | +| `min-fresh` | - | +| - | `s-maxage` | +| `no-cache` | `no-cache` | +| `no-store` | `no-store` | +| `no-transform` | `no-transform` | +| `only-if-cached` | - | +| - | `must-revalidate` | +| - | `proxy-revalidate` | +| - | `must-understand` | +| - | `private` | +| - | `public` | +| - | `immutable` | +| - | `stale-while-revalidate` | +| `stale-if-error` | `stale-if-error` | + +Nota: Comprueba la [tabla de compatibilidad](#browser_compatibility) para su soporte; los agentes de usuario que no las reconozcan podrían ignorarlas. + +## Vocabulario + +Los siguientes términos son usados en este documento; muchos pero no todos provienen de la especificación. + +- `Caché(HTTP) ` + - : Implementación la cual mantiene peticiones y respuestas para reusarlas en peticiones posteriores. Puede ser tanto una cache privada como una compartida. +- `Caché compartida` + - : Caché existente entre el servidor de origen y los clientes (p. ej. Proxy, CDN). Almacena una sola respuesta para reutilizarla en multiples usuarios — por tanto los desarrolladores deberían evitar que el almacenamiento de contenidos personalizados sea cacheado en la caché compartida. +- `Caché privada` + - : Caché existente en el cliente. También conocida como _caché local_, o _caché del navegador_, etc. Puede almacenar y reutilizar contenido personalizado para un único usuario. +- `Respuesta almacenada` + - : Almacena una respuesta en caches cuando es cacheable. Pero no siempre es reutilizada en ese momento. (Normalmente "caché" significa almacenar una respuesta). +- `Respuesta reutilizada` + - : Reutiliza respuestas cacheadas para las subsiguientes peticiones, +- `Revalidar respuesta ` + - : Pregunta al servidor de origen si una respuesta almacenada sigue siendo reciente o no. Normalmente se realiza a través de una petición condicionada. +- ` Respuesta reciente` + - : Indica que una respuesa es reciente. Esto normalmente significa que la respuesta puede ser reutilizada para las subsiguientes peticiones, dependiendo de las directivas de petición. +- `Respuesta pasada` + - : Indica que la respuestá está pasada. Normalmente significa que la respuesta ya no puede ser reutilizada. El almacenamiento caché no requiere que las respuestas pasadas sean eliminada inmediatamente, por que la revalidación puede cambiar la respuesta de pasada a reciente de nuevo. +- `Edad` + - : El tiempo desde que una respuesta fue generada. Es un criterio para ver si una respuesta es reciente o pasada. + +## Directivas + +Esta sección lista directivas que afectan al almacenamiento caché — directivas respuestas y directivas de peticiones. + +### `max-age` + +La directiva de respuesta `max-age=N`indica que la respuesta es reciente hasta los _N_ segundos posteriores a su generación. + +``` +Cache-Control: max-age=604800 +``` + +Indica que las cachés pueden almacenar esta respuesta y reutilizarla para las peticiones subsecuentes mientras estas son recientes. + +Ten en cuenta que `max-age` no es el tiempo pasado desde que la respuesta fue recibida, sino el tiempo desde que la respuesta fue generada en el servidor de origen. Por tanto si la(s) otra(s) caché(s) — en la ruta de red son cogidas por las respuesta — la almacenan por 100 segundos (indicado usando el campo de la cabecera `Age` en la respuesta), el navegador descontará 100 segundos del periodo de validez de la caché respuesta. + +``` +Cache-Control: max-age=604800 +Age: 100 +``` + +### `no-cache` + +La driectiva de respuesta `no-cache` indica que la respuesta puede ser almacenada en cachés, pero debe ser validada con el servidor de origen antes de cada reutilización — incluso cuando la caché está desconectada del servidor de origen. + +``` +Cache-Control: no-cache +``` + +Si quieres que las cachés siempre comprueben la actualización de contenido cuando reúsen el contenido almacenado, `no-cache` es la directiva a usar. Esta obliga a la cache a revalidarla con cada petición con el servidor de origen. + +Ten en cuenta que `no-cache` no significa "no almacenes". `no-cache` permite almacenar una respuesta, pero les obliga a revalidarla antes de reusarla. En caso de que "no almacenes" sea lo que estabas buscando, entonces `no-store` es la directiva a usar. + +#### `must-revalidate` + +La respuesta `must-revalidate` indica que la respuesta puede ser usada mientras sea reciente pero que una vez el recurso se vuelve obsoleto, la cache no debe usar su copia obsoleta sin correctamente validar en el servidor de origen. + +Tipicamente, `must-revalidate` es usada con `max-age` + +``` +Cache-Control: max-age=604800, must-revalidate +``` + +HTTP permite a las caches reutilizar respuesteas obsoletas cuando están desconectados del servidor de origen. `must-revalidate` es una forma de prevenirlo, de esta forma la cache o revalida la respuesta almacenada con el servidor de origen, o si no es posible genera una respuesta 504(Gateway Timeout). + +#### `proxy-revalidate` + +`proxy-revalidate` es similar a `must-revalidate`, pero es especifico para caches compartidos (es decir, proxies). Ignorado por caches privados. + +#### `no-store` + +La directiva de respuesta `no-store` indica que cualquier caché de cualquier tipo (privado o compartido) no debe almacenar esta respuesta. + +``` +Cache-Control: no-store +``` + +#### `private` + +La directiva de respuesta `private` indica que la respuesta solo puede ser almacenada por cachés privadas (p. ej. cachés locales en navegadores). + +``` +Cache-Control: private +``` + +Deberías añadir la directiva `private` para el contenido personalizado de usuario — en particular, respuestas recibidas después del login, y sesiones administradas via cookies. + +Si olvidas añadir `private` a una respuesta con contenido personalizado, entonces esa respuesta puede ser almacenada en una caché compartida y terminar siendo reutilizada por multiples usuarios, lo cual puede causar una fuga de información personal. + +#### `public` + +Las respuestas para peticiones con el campo de la cabecera `Authorization` no debe ser almacenadas en cache compartida. Pero la directiva `public` causará que dichas respuestas se almacenen en la caché compartida. + +``` +Cache-Control: public +``` + +En general, cuando las paginas estan bajo Basic Auth o Disgest Auth, el navegador enviará peticiones con la cabecera `Authorization`. Esto significa que la respuesta es acceso-controlada para usuarios restringidos (quienes tienen cuenta), y esto es no compartidamente almacenado , incluso si tiene `max-age`. + +Puedes usar la directiva `public` para desbloquear esa restricción. + +``` +Cache-Control: public, max-age=604800 +``` + +Ten en cuenta que, `s-maxage` o `must-revalidate` también desbloquean esa restricción. + +Si una petición no tiene la cabecera `Authorization`, o si ya estás usando `s-maxage` o `must-revalidate` en la respuesta, entonces no necesitas usar `public`. + +#### `must-understand` + +La directiva de respuesta `must-understand` indica que una caché debería de almacenar la respuesta solo si entiende que los requisitos para la cachear basado en el codigo de estado. + +`must-understand` debe ir emparejada con `no-store`, para un comportamiento como solución alternativa. + +``` +Cache-Control: must-understand, no-store +``` + +Si una caché no soporta `must-understand`, será ignorada. Si `no-store`está tambíen presente, la respuesta no es almacenada. + +Si una caché soporta `must-understand`, almacena la respuesta de acuerdo con los requisitos de cache basados en su código de estado. + +#### `no-transform` + +Algunos intermediarios transforman el contenido para diversas razones. Por ejemplo, algunas convierten las imagenes para reducir el tamaño de transferencia. En algunos casos, esto no es deseable para el proveedor de contenidos. + +`no-transform` indica que cualquier intermediario (sin importar si implementa cache) + +Nota:[Web Light de Google](https://support.google.com/webmasters/answer/6211428) es un intermediario de este tipo. Convirte las imagenes para minimizar los datos para almacenar en cache o para conexiones lentas, y soporta `no-transform` como una opción para evitar dicha función. + +#### `immutable` + +La directiva de respuesta `immutable` indica que la respuesta no será actualizada mientras sea reciente. + +``` +Cache-Control: public, max-age=604800, immutable +``` + +Una buena practica moderna para contenidos estáticos es incluir versión/hashes en sus URLs, mientras nunca se modifiquen los contenidos — pero en su lugar, cuando es necesario, _actualizar_ las fuentes con nuevas versiones que tienen nuevos números de versión/hashes, de forma que las URLs son diferentes. +Es es conocido como el patrón de **cache-busting**. + +``` +<script src=https://example.com/react.0.0.0.js></script> +``` + +Cuando un usuario recarga el navegador, el navegador le mandará una petición condicional para validar el servidor de origen. Pero esto no es necesariamente para revalidar esos tipos de fuentes estáticas incluso cuando un usuario rcarga el navegador, por que no son nunca modificados. +`immutable` indica a una cache que una respuesta es inmutable mientras es reciente, y evita que ese tipo de innecesarias peticiones condicionales al servidor. + +Cuando tu usas un patrón de cache-busting para fuentes y las aplicas a un largo `max-age`, puedes también añadir `immutable` para evitar la revalidación. + +#### `stale-while-revalidate` + +La directiva de respuesta `stale-while-revalidate` indica que la cache puede reusar una respuesta antigua mientras se revalida en una caché. + +``` +Cache-Control: max-age=604800, stale-while-revalidate=86400 +``` + +En el ejemplo anterior, la respuesta está actualizada durante 7 días (604800s). Después de 7 días, se vuelve obsoleto, pero la caché puede reutilizarla para cualquier solicitud que se realice al día siguiente (86400s) — siempre que revaliden la respuesta en segundo plano. + +La revalidación hará que la memoria caché vuelva a estar actualizada, de modo que a los clientes les parezca que siempre estuvo actualizada durante ese período — Ocultando de forma efectiva la penalización por latencia de la revalidación. + +Si no se produjo ninguna petición durante ese período, la caché se vuelve obsoleta y la próxima solicitud se revalidará normalmente. + +#### `stale-if-error` + +La directiva de respuesta `stale-if-error` indica que la memoria caché puede reutilizar una respuesta obsoleta cuando un servidor de origen responde con un error (500, 502, 503 o 504). + +``` +Cache-Control: max-age=604800, stale-if-error=86400 +``` + +En el ejemplo anterior, la respuesta está actualizada durante 7 días (604800s). Después de 7 días, se vuelve obsoleta, pero se puede usar durante 1 día adicional (86400s) si el servidor responde con un error. + +Después de un período de tiempo, la respuesta almacenada normalmente se vuelve obsoleta. Eso significa que el cliente recibirá una respuesta de error tal como está si el servidor de origen la envía. + +## Request Directives + +### `no-cache` + +La directiva de petición `no-cache` pide a las cachés que validen la respuesta con el servidor de origen antes de volver a usarla. + +``` +Cache-Control: sin caché +``` + +`no-cache` permite a los clientes solicitar la respuesta más actualizada incluso si la caché tiene una respuesta reciente. + +Los navegadores generalmente agregan `no-cache` a las solicitudes cuando los usuarios **fuerzan la recarga** de una página. + +## `no-store` + +La directiva de petición `no-store` permite a un cliente solicitar que las cachés se abstengan de almacenar la petición y la respuesta correspondiente, incluso si la respuesta del servidor de origen pudiera almacenarse. + +``` +Cache-Control: no-store +``` + +Tenga en cuenta que los principales navegadores no admiten peticiones con `no-store`. + +### `max-age` + +La directiva de petición `max-age=N` indica que el cliente permite una respuesta almacenada que es generada en el servidor de origen dentro de _N_ segundos. + +``` +Cache-Control: max-age = 3600 +``` + +En el caso anterior, si la respuesta con `Cache-Control: max-age=604800` se almacenó en las cachés hace 3 horas, la caché no podría reutilizar esa respuesta. + +Muchos navegadores usan esta directiva para **recargar**, como se explica a continuación. + +``` +Cache-Control: max-age=0 +``` + +`max-age=0` es una solución alternativa para `no-cache`, porque muchas implementaciones de caché antiguas (HTTP/1.0) no son compatibles con `no-cache`. Los navegadores más recientes siguen usando `max-age=0` en "recargas" (por compatibilidad con versiones anteriores) y, alternativamente, usan `no-cache` para provocar una "recarga forzada". + +### `max-stale` + +La directiva de solicitud `max-stale=N` indica que el cliente permite una respuesta almacenada que está obsoleta hasta _N_ segundos. + +``` +Cache-Control: max-stale=3600 +``` + +En el ejemplo anterior, si la respuesta con `Cache-Control: max-age=604800` se almacenó en caché hace 3 horas, la caché no podría reutilizar esa respuesta. + +Los clientes pueden usar este encabezado cuando el servidor de origen está inactivo o es demasiado lento y pueden aceptar respuestas almacenadas en caché incluso si son un poco antiguas. + +Tenga en cuenta que los principales navegadores no admiten solicitudes con `max-stale`. + +### `min-fresh` + +La directiva de petición `min-fresh=N` indica que el cliente permite una respuesta almacenada que está actualizada durante al menos _N_ segundos. + +``` +Cache-Control: min-fresh=600 +``` + +En el caso anterior, si la respuesta con `Cache-Control: max-age=3600` se almacenó en las cachés hace 51 minutos, la caché no podría reutilizar esa respuesta. + +Los clientes pueden usar este encabezado cuando el usuario requiere que la respuesta no solo sea actualizada, sino que también requiere que no se actualice durante un período de tiempo. + +Tenga en cuenta que los principales navegadores no admiten peticiones con `min-fresh`. + +### `no-transform` + +El mismo significado que `no-transform` tiene para una respuesta, pero para una petición en su lugar. + +### `only-if-cached` + +El cliente indica que la caché debe obtener una respuesta ya almacenada en caché. Si una caché ha almacenado una respuesta, se reutiliza. + +## Casos de uso + +### Prevención del almacenamiento + +clear + +volume_up +4.213 / 5.000 +Resultados de traducción + +### `sin transformación` + +El mismo significado que `no-transform` tiene para una respuesta, pero para una solicitud en su lugar. + +### `solo si está en caché` + +El cliente indica que el caché debe obtener una respuesta ya almacenada en caché. Si un caché ha almacenado una respuesta, se reutiliza. + +## Casos de uso + +### Prevención del almacenamiento + +Si no desea que una respuesta se almacene en las cachés, use la directiva `no-store`. + +``` +Cache-Control: no-store +``` + +Tenga en cuenta que `no-cache` significa "se puede almacenar pero no reutilizar antes de validar" — por lo que no es para evitar que se almacene una respuesta. + +```plain ejemplo-malo +Cache-Control: no-cache +``` + +En teoría, si las directivas están en conflicto, se debe respetar la directiva más restrictiva. Así que el siguiente ejemplo básicamente no tiene sentido, porque `private`, `no-cache`, `max-age=0` y `must-revalidate` entran en conflicto con `no-store`. + +```plain ejemplo-malo +# conflicted +Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate + +# equivalete a +Cache-Control: no-store +``` + +### Almacenamiento en caché de activos estáticos con “cache busting” + +Cuando crea activos estáticos con mecanismos de control de versiones/hashing, agregar una versión/hash al nombre de archivo o cadena de consulta es una buena manera de administrar el almacenamiento en caché + +Por ejemplo: + +```html +<!-- index.html --> +<guión src=/activos/react.min.js></guión> +<img src=/assets/hero.png ancho=900 alto=400> +``` + +La versión de la biblioteca de React cambiará cuando actualices la biblioteca, y `hero.png` también cambiará cuando edites la imagen. Por lo tanto, son difíciles de almacenar en un caché con `max-age`. + +En tal caso, podría abordar las necesidades de almacenamiento en caché utilizando una versión numerada específica de la biblioteca e incluyendo el hash de la imagen en su URL. + +```html +<!-- index.html --> +<script src=/assets/react.0.0.0min.js></script> +<img src=/assets/hero.png?hash=deadbeef ancho=900 alto=400> +``` + +Puede agregar un valor grande de `max-age` e `immutable`, porque el contenido nunca cambiará. + +``` +# /assets/* +Cache-Control: max-age=31536000, immutable +``` + +Cuando actualiza la biblioteca o edita la imagen, el nuevo contenido debe tener una nueva URL y los cachés no se reutilizan. Eso se llama el patrón de “cache busting” + +Utilice `no-cache` para asegurarse de que la respuesta HTML en sí misma no se almacene en caché. `no-cache` puede causar la revalidación y el cliente recibirá correctamente una nueva versión de la respuesta HTML y los activos estáticos. + +``` +# /index.html +Cache-Control: no-cache +``` + +Nota: si `index.html` se controla mediante autenticación básica o autenticación implícita, los archivos bajo `/assets` no se almacenan en la memoria caché compartida. Si los archivos `/assets/` son adecuados para almacenar en un caché compartido, también necesita uno de `public`, `s-maxage` o `must-revalidate`. + +### Contenidos actualizados siempre + +Para el contenido que se genera dinámicamente, o que es estático pero se actualiza con frecuencia, deseas que un usuario reciba siempre la versión más actualizada. + +Si no agrega un encabezado `Cache-Control` porque la respuesta no está destinada para almacenarse en caché, podría causar un resultado inesperado. El almacenamiento en caché puede almacenarlo en caché heurísticamente — por lo que si tienes algún requisito para el almacenamiento en caché, siempre debes indicarlo explícitamente en el encabezado `Cache-Control`. + +Agregar `no-cache` a la respuesta provoca la revalidación en el servidor, por lo que puede entregar una respuesta nueva cada vez — o si el cliente ya tiene una nueva, simplemente responda `304 Not Modified`. + +``` +Cache-Control: no-cache +``` + +La mayoría de las cachés HTTP/1.0 no son compatibles con las directivas `no-cache`, por lo que históricamente se usaba `max-age=0` como solución alternativa. Pero usar solo `max-age=0` podría hacer que se reutilice una respuesta obsoleta cuando los cachés se desconecten del servidor de origen. `must-revalidate` aborda eso. Es por eso que el siguiente ejemplo es equivalente a `no-cache`. + +``` +Cache-Control: max-age=0, debe revalidar +``` + +Pero por ahora, simplemente puedes usar `no-cache` en su lugar. + +### Borrar un caché ya almacenado + +Desafortunadamente, no hay directivas de caché para borrar las respuestas ya almacenadas de las cachés. + +Imagine que los clientes/cachés almacenan una respuesta nueva para una ruta, sin solicitud de vuelo al servidor. No hay nada que un servidor pueda hacer en esa ruta. + +Alternativamente, `Clear-Site-Data` puede borrar la memoria caché del navegador para un sitio. Pero tenga cuidado: eso borra todas las respuestas almacenadas para un sitio — y solo en los navegadores, no para un caché compartido. + +## Especificaciones + +{{Specifications}} + +## Compatibilidad en navegadores + +{{Compat}} + +[HTTP Caching](https://httpwg.org/http-core/draft-ietf-httpbis-cache-latest.html) +[RFC5861 - HTTP Cache-Control Extensions for Stale Content](https://datatracker.ietf.org/doc/html/rfc5861) +[RFC8246 - HTTP Immutable Responses](https://datatracker.ietf.org/doc/html/rfc8246) + +## Véase también + +- [HTTP Caching FAQ](/es/docs/Web/HTTP/Caching) +- [Caching Tutorial for Web Authors and Webmasters](https://www.mnot.net/cache_docs/) +- [Caching best practices & max-age gotchas](https://jakearchibald.com/2016/caching-best-practices/) +- [Cache-Control for Civilians](https://csswizardry.com/2019/03/cache-control-for-civilians/) +- {{HTTPHeader("Age")}} +- {{HTTPHeader("Expires")}} +- {{HTTPHeader("Pragma")}} |