Invalidar conteúdo armazenado em cache

A invalidação de cache, às vezes chamada de purga de cache, é o processo de declarar o conteúdo armazenado em cache como inválido. Isso faz com que a entrada seja removido do cache e recarregado pelo servidor de origem da próxima vez que o conteúdo é solicitado.

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

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

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

Sintaxe de invalidação compatível

A sintaxe de invalidação compatível é a seguinte:

Tipo Sintaxe Exemplo
Invalidação de host Invalidar respostas armazenadas em cache para o host especificado. gcloud edge-cache services invalidate-cache SERVICE_NAME \
    --host="media.example.com"
Invalidação de caminho Invalidar as 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 da origem ou tipo MIME Invalidar respostas armazenadas em cache com uma tag correspondente. Várias tags são tratadas como um OR booleano. 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:

  • Até 10 tags de cache podem ser especificadas em uma única solicitação de invalidação.
  • Você pode combinar host, path e tags em uma única solicitação de invalidação. Eles são tratados como um valor booleano AND.
  • Quando várias tags de cache são especificadas, elas são tratadas como um valor 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

As tags de cache (ou chaves alternativas) permitem invalidar conteúdo com base na metadados arbitrários.

Essas tags são definidas pelo seguinte:

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

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

Veja o exemplo a seguir.

  • Você tem os seguintes objetos armazenados em cache:

    • Objeto 1 armazenado em cache com as tags status=200, content-type=video/mp4
    • Objeto 2 armazenado em cache com as tags status=404, content-type=text/plain
    • Objeto 3 armazenado em cache 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 é para o que evita a necessidade de especificar todas as combinações de tags possíveis, algumas das quais podem ser desconhecidos.

Observações:

  • As tags de cache padrão não são incluídas na resposta do cliente porque eles refletem cabeçalhos existentes (como a linha de status ou 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 enviados ao cliente. Se você deseja impedir que sejam enviados para o cliente, use o recurso responseHeadersToRemove em uma routeRule para remover o cabeçalho Cache-Tag. Para ver exemplos, consulte a cabeçalhos personalizados na documentação do Google Cloud.

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 onde o conteúdo foi buscado. Não é preciso especificar essas tags na origem de resposta.

Tag Detalhes
status=HTTP_STATUS_CODE

A tag de cache status é definida com base no HTTP retornado código de status 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 na Content-Type Cabeçalho de resposta HTTP.

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 do qual o conteúdo foi buscado.

As referências do valor origin o valor de .routing.routeRules[].origin e permite que você para invalidar conteúdo de um site com comportamento incorreto ou servidor de origem.

Limitações da tag de cache

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

  • Não pode exceder 120 bytes por tag
  • Não pode exceder 1 KiB (1.024 bytes) do total de nomes de tag por objeto em cache
  • Não deve exceder 10 tags por objeto, sem incluir as tags padrão adicionadas pelo CDN de mídia
  • Precisa ser um nome de token HTTP válido, conforme definido na Seção 3.2.6 do HTTP RFC 7230
  • Não pode incluir status=, origin= ou Prefixos content-type= (que são ignorados).

As tags que não estiverem dentro desses limites ou atenderem a esses requisitos não serão ignorada. 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 permissão networkservices.EdgeCacheServices.invalidateCache controla o acesso à API invalidateCache. Essa permissão está incluída nos networkservices.edgeCacheAdmin e networkservices.edgeCacheUser papéis do Identity and Access Management.

Exemplos

Os exemplos a seguir mostram como invalidar respostas em cache para um serviço de CDN de mídia.

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

Invalidar pelo host

Console

  1. Acesse a página do Media CDN no console do Google Cloud.
    Acessar o Media CDN
  2. Clique na guia Services.
  3. Clique no seu serviço.
  4. Clique na guia Invalidação de cache.
  5. Para o padrão de caminho ser invalidado, insira um nome do host seguido por um caminho. Por exemplo: media.example.com/cats ou media.example.com/cat*. O nome do host não pode incluir *.

gcloud

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

Substitua:

  • SERVICE_NAME pelo nome do serviço de armazenamento em cache de borda.
  • HOST com o 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 por caminho

Console

  1. Acesse a página do Media CDN no console do Google Cloud.
    Acessar o Media CDN
  2. Clique na guia Services.
  3. Clique no seu serviço.
  4. Clique na guia Invalidação de cache.
  5. Para que o padrão de caminho seja invalidado, insira um caminho. Por exemplo: /videos/funny.mp4 ou /segments/e94a6b1f731/*.

gcloud

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

Substitua:

  • SERVICE_NAME pelo nome do serviço de armazenamento em cache de borda.
  • HOST pelo nome do host do entradas de cache a serem invalidadas. Para fazer correspondência com qualquer nome de host, omita o host .
  • PREFIX com um prefixo de caminho que termina em "*" que corresponde a 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 * à direita. caractere. Transmitir --path="/videos/funny.mp4" invalida a resposta em cache (se houver) correspondente a esse caminho.

Invalidar por tag de cache

Console

O console do Google Cloud não oferece suporte à invalidação por tags de cache.

gcloud

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

Substitua:

  • SERVICE_NAME pelo nome do serviço de armazenamento em cache de borda.
  • TAGS por uma lista de tags separada por vírgulas.

Exemplo:

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

Latência de invalidação

Invalidação de cache nos milhares de locais do Media CDN normalmente é concluído em um minuto no mundo todo.

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

Geração de registros

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, você vai receber uma mensagem de erro HTTP 429 com o status RESOURCE_EXHAUSTED.

Uma invalidação pode ser de qualquer tamanho. Por exemplo, a invalidação /images/my-image.png conta como uma invalidação. Invalidar /images/* também conta como uma invalidação.

Esse comportamento é diferente do comportamento em Cloud CDN O Cloud CDN aceita uma invalidação por minuto.