¿Qué es la invalidación de caché?

La invalidación de caché elimina entradas almacenadas en caché o las marca como caducadas antes de su vencimiento normal. Las solicitudes posteriores desencadenan una nueva obtención o una revalidación con el origen, y una entrada que solo se haya marcado como caducada puede seguir sirviéndose mientras tanto, según la política de caché.

Cómo funciona la invalidación de caché

La invalidación cambia el estado de la caché sin exigir que quienes publican contenido esperen a que transcurran los períodos de vigencia. HTTP por sí solo ofrece pocas posibilidades para esto: una caché invalida una URL cuando pasa por ella una solicitud no segura dirigida a esa URL, como PUT, POST o DELETE, que se completa correctamente. Esto solo afecta a las cachés en la ruta de esa solicitud, y ninguna directiva Cache-Control puede borrar una respuesta que ya está almacenada. Por ello, las CDN exponen su propio plano de control, que puede actuar sobre URL exactas, prefijos, etiquetas o una distribución completa; después, los nodos afectados eliminan el objeto o exigen su revalidación. Una purga definitiva elimina el objeto, por lo que la siguiente solicitud genera un fallo de caché: el objeto se obtiene de nuevo en su totalidad y vuelve a almacenarse en caché. Una purga suave conserva el objeto y lo marca como caducado, por lo que la siguiente solicitud lo revalida y puede reutilizar el cuerpo almacenado cuando el origen responde 304 Not Modified. Los nombres varían según el proveedor: Cloudflare llama invalidación a la operación suave y purga a la definitiva, mientras que lo que Amazon CloudFront y Google Cloud CDN llaman invalidación elimina el objeto.

Datos clave

  1. ¿Purgar la URL original también elimina sus variantes redimensionadas o con otro formato? Solo si el proveedor las trata como un mismo objeto o si las incluyes juntas en la operación, así que empieza por identificar cómo difieren las URL de las variantes de la original. En los servicios de Fastly CDN, Image Optimizer purga el original y todas las variantes cuando la solicitud de purga no incluye parámetros de transformación; en los servicios de Fastly Compute, el mismo conjunto se purga mediante la Purge API con una clave sustituta compartida. Cloudflare purga todas las variantes almacenadas en caché de una URL de imagen que utiliza su función Vary for Images. Amazon CloudFront, en cambio, exige incluir la cadena de consulta en la ruta de invalidación cuando la distribución reenvía las cadenas de consulta al origen, o añadir un comodín * al final para abarcar todas las cadenas de consulta. Una purga que especifica una URL no alcanza las variantes publicadas en otras rutas, y que abarque otros nombres de host depende del proveedor: una invalidación de ruta de Google Cloud CDN se aplica a todos los nombres de host del balanceador de carga, salvo que se especifique un host. Las variantes que quedan fuera del selector necesitan una etiqueta de caché o una clave sustituta compartida, una purga por prefijo o una lista explícita.
  2. ¿En qué orden debo hacerlo y cómo sé que funcionó? Corrige primero el contenido en el origen: tanto Cloudflare como Google Cloud CDN advierten que, de lo contrario, la siguiente solicitud puede volver a almacenar en caché la versión anterior. Una respuesta exitosa de la API no demuestra que se haya eliminado el contenido. Cloudflare documenta que una respuesta HTTP 200 a una solicitud de purga confirma su recepción, pero no que hubiera contenido almacenado en caché ni que se haya eliminado, e indica que solicites el recurso y confirmes que CF-Cache-Status ya no sea HIT. Ese encabezado es un indicio, no una prueba: la primera solicitud después de una purga informa MISS y las posteriores informan HIT para la copia almacenada de nuevo, mientras que STALE o UPDATING significa que se sirvió una copia almacenada caducada. Solicita el original y cada variante afectada con un cliente que no tenga caché local, y confirma que el contenido devuelto sea el de reemplazo. Cada respuesta describe una caché: Google Cloud CDN señala que una invalidación puede figurar como completada mientras un pequeño número de cachés aún no la ha procesado, una situación poco frecuente que se corrige por sí sola. En CloudFront, una invalidación enviada no se puede cancelar, así que revisa las rutas antes de enviarla.
  3. ¿Una purga de CDN actualiza lo que conservan los navegadores? No. Google Cloud CDN indica que las invalidaciones no afectan a las copias en las cachés de los navegadores web ni en las cachés gestionadas por proveedores de servicios de internet externos, y la guía de CloudFront señala que un usuario podría seguir viendo la versión anterior hasta que caduque en esas cachés. Para dejar de utilizar esas copias antes, publica el archivo corregido con un nombre o una ruta nuevos y actualiza las páginas que hacen referencia a él. Esta es una de las razones por las que CloudFront recomienda nombres de archivo con versiones en lugar de invalidaciones para archivos que se actualizan con frecuencia. Las copias almacenadas bajo la URL anterior no se eliminan: las páginas que hacen referencia a la nueva URL simplemente dejan de solicitarlas. Cambiar solo la cadena de consulta es menos eficaz, porque únicamente funciona cuando todas las cachés de la ruta incluyen la cadena de consulta en su clave de caché; con el nivel de caché Ignore Query String de Cloudflare, por ejemplo, las URL que solo difieren en la cadena de consulta comparten un mismo objeto almacenado en caché. Una URL que deba mantenerse igual y cuyo contenido pueda necesitar correcciones sin cambiarla no debería tener un tiempo de vida largo en la caché del navegador.
  4. ¿Purga definitiva o suave, y qué alcance debe tener? Después de una purga definitiva de todo el contenido, las solicitudes se atienden desde el origen hasta que la caché vuelve a llenarse; Cloudflare advierte que, en sitios con mucho tráfico y numerosos recursos, esto puede causar un gran pico de solicitudes al origen, ralentizar el sitio y sobrecargar el origen, y Google recomienda invalidar solo lo que debes invalidar. Una purga suave permite que la siguiente solicitud revalide y reutilice el cuerpo almacenado, lo que solo funciona si el origen envía ETag o Last-Modified y responde a solicitudes condicionales; Cloudflare la sugiere para actualizar contenido que quizá no haya cambiado, como un grupo de recursos que comparten una etiqueta de caché. La contrapartida es que el contenido marcado como caducado todavía puede llegar a los usuarios: Fastly describe que un objeto sometido a una purga suave se sirve como caducado mientras se obtiene el actualizado, y Cloudflare puede servir contenido invalidado como caducado cuando el origen devuelve un error 5xx o no está disponible. Usa una purga definitiva cuando el contenido anterior no deba volver a servirse nunca. La agrupación de solicitudes y una capa de protección del origen reducen la cantidad de solicitudes que llegan al origen para volver a llenar la caché.

Cuándo es importante la invalidación de caché

Invalida un recurso cuando una corrección urgente deba propagarse antes de que venza su tiempo de vida. Una invalidación en una CDN no alcanza las copias que los navegadores u otras cachés posteriores ya conservan, por lo que conviene publicar el contenido que cambia habitualmente con nombres de archivo que incluyan una versión. Purga el conjunto más reducido que abarque el cambio, porque todo lo que elimina una purga amplia debe volver a obtenerse del origen a medida que llegan las solicitudes.

Cómo ayuda Transloadit con la invalidación de caché

Smart CDN de Transloadit almacena en caché cada resultado transformado bajo su URL tlcdn.com. La documentación describe controles que limitan de antemano cuánto tiempo se reutiliza un resultado: el parámetro cache_duration del Robot /file/serve establece los tiempos de vida en el navegador y en las cachés compartidas que se envían con el resultado y, para las URL firmadas, el tiempo de vida efectivo en caché está limitado por el tiempo de validez restante de la firma.

Las páginas enlazadas aquí no describen una operación de purga o invalidación para Smart CDN, ni qué ocurre con un resultado almacenado en caché cuando el original se reemplaza sin cambiar la ruta del archivo. Una URL de Smart CDN especifica un archivo de origen y los parámetros de transformación que lee tu Template, por lo que una ruta de archivo distinta o un valor diferente para uno de esos parámetros solicita una variante distinta. Las páginas no indican que un parámetro adicional no relacionado permita evitar un resultado almacenado en caché; prueba el caso de la ruta sin cambios en tu propio Workspace antes de confiar en ese comportamiento.

Explora las capacidades de entrega de Transloadit

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis