Invalidar contenido almacenado en caché

La invalidación de caché, a veces denominada purgado de caché, es el proceso de declarar que el contenido almacenado en caché no es válido. Esto provoca que la entrada se elimine de la caché y, a continuación, se vuelva a rellenar desde el servidor de origen la próxima vez que se solicite el contenido.

Media CDN admite varias formas de seleccionar el contenido que se va a invalidar, como se indica a continuación:

  • Host y ruta de URL
  • Prefijo de URL (comodín)
  • Etiquetas de caché, incluidas las etiquetas integradas de status, origin y content-type

Puede combinar estos parámetros de invalidación para orientar las respuestas específicas almacenadas en caché y minimizar la carga del origen en el relleno de la caché posterior.

Sintaxis de invalidación admitida

La sintaxis de invalidación admitida es la siguiente:

Tipo Sintaxis Ejemplo
Invalidación de host Invalida las respuestas almacenadas en caché del host especificado. gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"
Invalidación de rutas Invalida las respuestas almacenadas en caché de la ruta o el prefijo de ruta especificados. gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/content/1234/hls/*"

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/videos/funny.mp4"
Invalidación de etiquetas de caché en el código de estado HTTP, el nombre de origen o el tipo MIME Invalida las respuestas almacenadas en caché con una etiqueta coincidente. Las etiquetas múltiples se tratan como un valor booleano OR. gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="status=404,origin=staging-origin"

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="content-type=application/x-mpegurl"

Notas:

  • Se pueden especificar hasta 10 etiquetas de caché en una sola solicitud de invalidación.
  • Puedes combinar host, path y tags en una sola solicitud de invalidación. Se tratan como un valor booleano AND.
  • Si se especifican varias etiquetas de caché, se tratarán como un valor booleano OR. Por ejemplo, si especificas --tags="status=404,origin=staging-origin", se invalidarán todas las respuestas con la etiqueta de caché status=404, así como todas las respuestas con la etiqueta de caché origin=staging-origin.

Etiquetas de caché

Las etiquetas de caché (o claves alternativas) te permiten invalidar contenido en función de metadatos arbitrarios.

Estas etiquetas se definen de la siguiente manera:

  • Definiendo el encabezado HTTP Cache-Tag en una respuesta de origen, con etiquetas especificadas como una lista de valores separados por comas.
  • Etiquetas integradas basadas en el código de estado HTTP de la respuesta, el tipo MIME del encabezado de respuesta HTTP Content-Type o el nombre del origen del que se ha obtenido la respuesta.

Cuando se especifican varias etiquetas en una sola solicitud de invalidación, se tratan como un valor booleano OR.

Veamos un ejemplo:

  • Tienes los siguientes objetos almacenados en caché:

    • Objeto en caché n.º 1 con las etiquetas status=200, content-type=video/mp4
    • Objeto en caché n.º 2 con las etiquetas status=404, content-type=text/plain
    • Objeto en caché n.º 3 con las etiquetas status=200, content-type=application/x-mpegurl
  • Envías una solicitud para invalidar objetos con tags="status=200,content-type=text/plain"

  • Resultado: los tres objetos almacenados en caché se invalidan al mismo tiempo. De esta forma, no es necesario especificar todas las combinaciones de etiquetas posibles, algunas de las cuales podrían ser desconocidas.

Notas:

  • Las etiquetas de caché predeterminadas no se incluyen en la respuesta visible para el cliente porque reflejan encabezados (como la línea de estado o Content-Type) o detalles de configuración internos.
  • Las etiquetas de caché enviadas por el origen en el encabezado de respuesta HTTP Cache-Tag se envían al cliente. Si quieres evitar que se envíen al cliente, usa la función responseHeadersToRemove en un routeRule para quitar el encabezado Cache-Tag. Para ver ejemplos, consulta la documentación sobre encabezados personalizados.

Etiquetas integradas

Las respuestas tienen automáticamente las siguientes etiquetas de caché aplicadas para admitir la invalidación de contenido en función del código de estado, el tipo MIME o el origen del que se ha obtenido el contenido. No es necesario que especifique estas etiquetas en sus respuestas de origen.

Etiqueta Detalles
status=HTTP_STATUS_CODE

La etiqueta de caché status se define en función del código de estado HTTP devuelto de la respuesta almacenada en caché.

Por ejemplo, puedes invalidar todas las respuestas HTTP 404 almacenadas en caché especificando status=404 en una solicitud de invalidación.

content-type=MIME_TYPE

La etiqueta de caché content-type se define en función del tipo MIME definido en el encabezado de respuesta HTTP Content-Type.

Por ejemplo, el tipo MIME de una lista de reproducción HLS es application/x-mpegURL o vnd.apple.mpegURL.

De esta forma, puede invalidar tipos de contenido específicos.

origin=ORIGIN_NAME

La etiqueta de caché origin se define en función del nombre del origen del que se ha obtenido el contenido.

El valor origin hace referencia al valor de .routing.routeRules[].origin y le permite invalidar contenido de un servidor de origen mal configurado o que no funciona correctamente.

Limitaciones de las etiquetas de caché

Las etiquetas de caché tienen las siguientes restricciones:

  • No debe superar los 120 bytes por etiqueta.
  • No debe superar los 4 KiB (4096 bytes) de nombres de etiquetas totales por objeto almacenado en caché.
  • No debe superar las 50 etiquetas por objeto, sin incluir las etiquetas predeterminadas añadidas por la CDN multimedia.
  • Debe ser un nombre de token HTTP válido, tal como se define en la sección 3.2.6 de HTTP RFC 7230.
  • No debe incluir los prefijos status=, origin= o content-type= integrados (que se ignoran).

Las etiquetas que no se ajusten a estos límites o no cumplan estos requisitos se ignorarán. En algunos casos (por ejemplo, cuando los encabezados de respuesta son demasiado grandes), la respuesta falla y no se almacena en caché.

Permisos

El permiso networkservices.EdgeCacheServices.invalidateCache controla el acceso a la API invalidateCache. Este permiso se incluye en los roles de networkservices.edgeCacheAdmin y networkservices.edgeCacheUser de gestión de identidades y accesos.

Ejemplos

En los siguientes ejemplos se muestra cómo invalidar las respuestas almacenadas en caché de un servicio de Media CDN.

Puede combinar los campos host, path y tags en una sola solicitud de invalidación para invalidar un conjunto específico de contenido.

Invalidar por host

Consola

  1. En la Google Cloud consola, ve a la página Media CDN.

    Ir a Media CDN

  2. Haz clic en la pestaña Services (Servicios).
  3. Haz clic en un servicio.
  4. Haz clic en la pestaña Invalidación de caché.
  5. Para invalidar la caché por host, en Host, especifica un nombre de host, a menos que quieras invalidar la ruta de todos los nombres de host. El nombre de host no puede incluir *.
  6. Haga clic en Invalidar y, a continuación, en Confirmar para indicar que quiere que Media CDN invalide el contenido que coincida con el host.

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host=HOST

Haz los cambios siguientes:

  • SERVICE_NAME con el nombre del servicio de almacenamiento en caché perimetral.
  • HOST con el nombre de host completo de la entrada de caché que se va a invalidar.

Por ejemplo:

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"

Invalidar todo el contenido asociado a un host puede ser arriesgado y afectar al rendimiento. Te recomendamos que reduzcas el ámbito de invalidación proporcionando una ruta específica o etiquetas de caché relevantes.

Invalidar por ruta

Consola

  1. En la Google Cloud consola, ve a la página Media CDN.

    Ir a Media CDN

  2. Haz clic en la pestaña Services (Servicios).
  3. Haz clic en un servicio.
  4. Haz clic en la pestaña Invalidación de caché.
  5. Para invalidar la caché por ruta, en Ruta, especifica la ruta y el nombre de archivo (por ejemplo,/videos/funny.mp4 o /segments/e94a6b1f731/*).
  6. Haz clic en Invalidar.

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path=PREFIX

Haz los cambios siguientes:

  • SERVICE_NAME con el nombre del servicio de almacenamiento en caché perimetral.
  • HOST con el nombre de host de las entradas de caché que se van a invalidar. Para que coincida con cualquier nombre de host, omite la marca host.
  • PREFIX con un prefijo de ruta que termina en "*" que coincide con las entradas de caché que se van a invalidar.

Por ejemplo:

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/segments/e94a6b1f731/*"

También puedes invalidar una ruta exacta omitiendo el carácter * final. Si se envía --path="/videos/funny.mp4", se invalida la respuesta almacenada en caché (si la hay) que coincida con esa ruta.

Invalidar por etiqueta de caché

Consola

  1. En la Google Cloud consola, ve a la página Media CDN.

    Ir a Media CDN

  2. Haz clic en la pestaña Services (Servicios).
  3. Haz clic en un servicio.
  4. Haz clic en la pestaña Invalidación de caché.
  5. Para validar la caché por etiquetas, en Etiquetas de caché, especifique una o varias etiquetas para invalidar la caché. Usa espacios o comas para separar las etiquetas. Puedes añadir un máximo de 10 etiquetas de caché para la invalidación.
  6. Haz clic en Invalidar.

gcloud

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags=TAGS

Haz los cambios siguientes:

  • SERVICE_NAME con el nombre del servicio de almacenamiento en caché perimetral.
  • TAGS con una lista de etiquetas separadas por comas.

Por ejemplo:

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --tags="status=404,content-type=text/plain"

Latencia de invalidación

La invalidación de la caché en las miles de ubicaciones de Media CDN suele completarse en un minuto en todo el mundo.

En algunos casos, la invalidación puede tardar más tiempo en función de la carga del sistema, la conectividad y el volumen de contenido que se esté invalidando.

Almacenamiento de registros

Si los registros de auditoría están habilitados, las llamadas de invalidación se registran en Cloud Logging.

Limitaciones

Las invalidaciones están limitadas por la frecuencia. Si superas el límite de frecuencia de invalidaciones, recibirás un mensaje de error HTTP 429 con el estado RESOURCE_EXHAUSTED.

Una invalidación puede ser de cualquier tamaño. Por ejemplo, invalidar /images/my-image.png cuenta como una invalidación. Invalidar /images/* también cuenta como una invalidación.