Invalidar conteúdo armazenado em cache

A invalidação de cache (ou limpeza de cache) é o processo de declarar que o conteúdo armazenado em cache é inválido. Isso remove o conteúdo do cache, garantindo que a próxima solicitação seja buscada diretamente do servidor de origem.

O Media CDN oferece várias maneiras de selecionar o conteúdo a ser invalidado, da seguinte forma:

  • Host e caminho do URL
  • Prefixo de URL (curinga)
  • Tags de cache, incluindo tags integradas para status, origin e content-type

É possível combinar esses parâmetros de invalidação para atingir respostas armazenadas em cache específicas e minimizar a carga de origem no preenchimento de cache subsequente.

Sintaxe de invalidação aceita

A sintaxe de invalidação aceita é a seguinte:

Tipo Sintaxe Exemplo
Invalidação de host Invalida respostas armazenadas em cache para o host especificado. gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"
Invalidação de caminho Invalida respostas armazenadas em cache para o caminho ou prefixo de caminho especificado. gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/content/1234/hls/*"

gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --path="/videos/funny.mp4"
Invalidação de tag de cache no código de status HTTP, nome de origem ou tipo MIME Invalida respostas armazenadas em cache com uma tag correspondente. Várias tags são tratadas como um 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"

Observações:

  • É possível especificar até 10 tags de cache em uma única solicitação de invalidação.
  • É possível combinar host, path e tags em uma única solicitação de invalidação. Elas são tratadas como um booleano AND.
  • Quando várias tags de cache são especificadas, elas são tratadas como um booleano OR. Por exemplo, se você especificar --tags="status=404,origin=staging-origin", todas as respostas com uma tag de cache de status=404 serão invalidadas, assim como todas as respostas com uma tag de cache de origin=staging-origin.

Tags de cache

Com tags de cache (ou chaves alternativas), é possível invalidar conteúdo com base em metadados arbitrários.

Essas tags são definidas da seguinte maneira:

  • Definindo o cabeçalho HTTP Cache-Tag em uma resposta de origem, com tags especificadas como uma lista de valores separados por vírgulas.
  • Tags integradas com base no código de status HTTP da resposta, no tipo MIME do cabeçalho de resposta HTTP Content-Type ou no nome da origem de que a resposta foi buscada.

Quando várias tags são especificadas em uma única solicitação de invalidação, elas são tratadas como um booleano OR.

Veja o exemplo a seguir.

  • Você tem os seguintes objetos armazenados em cache:

    • Objeto armazenado em cache n.º 1 com as tags status=200, content-type=video/mp4
    • Objeto armazenado em cache n.º 2 com as tags status=404, content-type=text/plain
    • Objeto armazenado em cache n.º 3 com as tags status=200, content-type=application/x-mpegurl
  • Você emite uma solicitação para invalidar objetos com tags="status=200,content-type=text/plain"

  • Resultado: todos os três objetos armazenados em cache são invalidados ao mesmo tempo. Isso evita que você precise especificar todas as combinações de tags possíveis, algumas das quais podem ser desconhecidas.

Observações:

  • As tags de cache padrão não são incluídas na resposta voltada para o cliente porque refletem cabeçalhos atuais (como a linha de status ou o Content-Type) ou detalhes de configuração interna.
  • As tags de cache enviadas pela origem no cabeçalho de resposta HTTP Cache-Tag são enviadas ao cliente. Se você quiser impedir que elas sejam enviadas ao cliente, use o recurso responseHeadersToRemove em uma routeRule para remover o cabeçalho Cache-Tag. Para exemplos, consulte a documentação de cabeçalhos personalizados.

Tags integradas

As respostas têm automaticamente as seguintes tags de cache aplicadas para oferecer suporte à invalidação de conteúdo com base no código de status, no tipo MIME ou na origem de que o conteúdo foi buscado. Não é necessário especificar essas tags nas respostas de origem.

Tag Detalhes
status=HTTP_STATUS_CODE

A tag de cache status é definida com base no código de status HTTP retornado da resposta armazenada em cache.

Por exemplo, é possível invalidar todas as respostas HTTP 404 armazenadas em cache especificando status=404 em uma solicitação de invalidação.

content-type=MIME_TYPE

A tag de cache content-type é definida com base no tipo MIME definido no cabeçalho de resposta HTTP Content-Type.

Por exemplo, o tipo MIME de uma playlist HLS é application/x-mpegURL ou vnd.apple.mpegURL.

Isso permite invalidar tipos específicos de conteúdo.

origin=ORIGIN_NAME

A tag de cache origin é definida com base no nome da origem o conteúdo foi buscado.

O valor origin faz referência ao valor de .routing.routeRules[].origin e permite invalidar conteúdo de um servidor de origem mal configurado ou com comportamento inadequado.

Limitações de tags de cache

As tags de cache têm as seguintes restrições:

  • Não podem exceder 120 bytes por tag
  • Não podem exceder 4 KiB (4.096 bytes) de nomes de tags totais por objeto armazenado em cache
  • Não podem exceder 50 tags por objeto, sem incluir as tags padrão adicionadas pelo Media CDN
  • Precisa ser um nome de token HTTP válido, conforme definido na seção 3.2.6 da RFC 7230 do HTTP
  • Não pode incluir os prefixos integrados status=, origin= ou content-type= (que são ignorados).

As tags que não estão dentro desses limites ou não atendem a esses requisitos são ignoradas. Em alguns casos (como quando os cabeçalhos de resposta são muito grandes), a resposta falha e não é armazenada em cache.

Permissões

A networkservices.EdgeCacheServices.invalidateCache permissão controla o acesso à API invalidateCache. Essa permissão está incluída nos papéis do Identity and Access Management networkservices.edgeCacheAdmin e networkservices.edgeCacheUser.

Exemplos

Os exemplos a seguir mostram como invalidar respostas armazenadas em cache para um serviço do Media CDN.

É possível combinar os campos host, path e tags em uma única solicitação de invalidação para invalidar um conjunto específico de conteúdo.

Invalidar por host

Console

  1. No Google Cloud console do, acesse a página Media CDN.

    Acesse Media CDN

  2. Clique na guia Serviços.
  3. Clique em um serviço.
  4. Clique na guia Invalidação de cache.
  5. Para invalidar o cache por host, em Host, especifique um nome do host, a menos que você queira invalidar o caminho para todos os nomes de host. O nome do host não pode incluir *.
  6. Clique em Invalidar e em Confirmar para indicar que você quer que o Media CDN invalide o conteúdo correspondente ao host.

gcloud

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

Substitua:

  • SERVICE_NAME pelo nome do serviço do Edge Cache.
  • HOST pelo nome de host completo da entrada de cache a ser invalidada.

Exemplo:

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

Invalidar todo o conteúdo associado a um host pode ser arriscado e afetar a performance. Considere reduzir o escopo de invalidação fornecendo um caminho específico ou tags de cache relevantes.

Invalidar por caminho

Console

  1. No Google Cloud console do, acesse a página Media CDN.

    Acesse Media CDN

  2. Clique na guia Serviços.
  3. Clique em um serviço.
  4. Clique na guia Invalidação de cache.
  5. Para invalidar o cache por caminho, em Caminho, especifique o caminho e o nome do arquivo, por exemplo,/videos/funny.mp4 ou /segments/e94a6b1f731/*.
  6. Clique em Invalidar.

gcloud

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

Substitua:

  • SERVICE_NAME pelo nome do serviço do Edge Cache.
  • PREFIX por um prefixo de caminho que termina em "*" e corresponde às entradas de cache a serem invalidadas.

Exemplo:

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

Também é possível invalidar um caminho exato omitindo o caractere * final. A transmissão de --path="/videos/funny.mp4" invalida a resposta armazenada em cache (se houver) que corresponde a esse caminho.

Invalidar por tag de cache

Console

  1. No Google Cloud console do, acesse a página Media CDN.

    Acesse Media CDN

  2. Clique na guia Serviços.
  3. Clique em um serviço.
  4. Clique na guia Invalidação de cache.
  5. Para invalidar o cache por tags, em Tags de cache, especifique uma ou mais tags para invalidar o cache. Use espaços ou vírgulas para separar as tags. É possível adicionar no máximo 10 tags de cache para invalidação.
  6. Clique em Invalidar.

gcloud

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

Substitua:

  • SERVICE_NAME pelo nome do serviço do Edge Cache.
  • TAGS por uma lista de tags separadas por vírgulas.

Exemplo:

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

Latência de invalidação

A invalidação de cache nos milhares de locais do Media CDN normalmente é concluída em um minuto globalmente.

Em alguns casos, a invalidação pode levar mais tempo, dependendo da carga do sistema, da conectividade e do volume de conteúdo que está sendo invalidado.

Logging

Se os registros de auditoria estiverem ativados, as chamadas de invalidação serão registradas no Cloud Logging.

Limitações

As invalidações são limitadas por taxa. Se você exceder o limite de taxa de invalidações, receberá uma mensagem de erro HTTP 429 com o status RESOURCE_EXHAUSTED.

Cada solicitação de invalidação conta como uma única operação em relação ao limite de taxa, independentemente do tamanho ou escopo do caminho. Por exemplo, invalidar um único arquivo (/images/my-image.png) ou um caminho curinga (/images/*) conta como uma solicitação de invalidação.