Como exibir conteúdo desatualizado

Nesta página, você encontra informações sobre como exibir conteúdo desatualizado e expirado com o Cloud CDN. A exibição de conteúdo desatualizado permite que o cache global do Google continue exibindo o conteúdo quando o servidor de origem estiver inacessível ou retornando erros para o Cloud CDN.

Os motivos para fazer isso são os seguintes:

  • você prefere exibir conteúdo desatualizado para os usuários em vez de retornar erros aos usuários.
  • A exibição de conteúdo desatualizado evita latência quando o cache recebe uma solicitação de conteúdo que acabou de expirar. Em vez de ter que aguardar uma revalidação síncrona para o back-end, o cache exibe o conteúdo desatualizado que acabou de expirar, enquanto revalida o conteúdo de forma assíncrona em segundo plano.

A configuração stale-while-revalidate exibe o conteúdo existente do cache (se disponível) por um número especificado de segundos após a expiração da entrada de cache, enquanto valida o conteúdo com a origem.

É possível definir o cabeçalho a partir da sua origem definindo o cabeçalho de resposta HTTP stale-while-revalidate.

O Cloud CDN pode ativá-lo em seu nome definindo a configuração cdnPolicy.serveWhileStale. Essa configuração determina quanto tempo, após a expiração da resposta, o Cloud CDN pode continuar exibindo uma versão desatualizada. Por padrão, esse tempo é de 86400s (1 dia).

A configuração serveWhileStale combina os recursos de armazenamento em cache HTTP stale-while-revalidate e stale-if-error.

Os valores padrão, mínimo e máximo são os seguintes:

  • Padrão: 86.400 segundos (um dia)
  • Mínimo: 0 segundo (desativa o recurso)
  • Máximo: 604.800 segundos (uma semana)

O conteúdo desatualizado é exibido até o limite especificado após o prazo de validade da entrada em cache, que é definido pelos cabeçalhos max-age, s-max-age ou Expires. Para mais informações, consulte Prazos de validade e solicitações de validação.

Se um armazenamento em cache próximo dos usuários finais do Cloud CDN não tiver uma cópia armazenada em cache do objeto para exibir o desatualizado ou se o objeto tiver atingido o TTL máximo desatualizado, o Cloud CDN revalidará o conteúdo de maneira síncrona com a origem. Se a origem retornar um erro naquele momento, o Cloud CDN retornará o erro de origem.

Diretiva de solicitação max-stale do cliente

Os clientes podem solicitar um tempo de serviço desatualizado mais curto especificando uma diretiva de controle de cache max-stale. Se especificado, esta diretiva controla o tempo de inatividade que o cliente tolera.

Se o conteúdo em cache for mais antigo do que o valor de max-stale do cliente, o Cloud CDN revalidará o conteúdo antes da exibição.

O cliente não pode solicitar um valor de max-stale maior que o valor configurado com a opção de configuração serve-while-stale e a diretiva de controle de cache stale-while-revalidate da origem.

Antes de começar

  • Leia sobre modos de cache e conteúdo estático.

  • Verifique se o Cloud CDN está ativado. Para instruções, consulte Como usar o Cloud CDN.

  • Se necessário, atualize para a versão mais recente do SDK do Cloud:

    gcloud components update
    

Exibição de conteúdo desatualizado durante a revalidação

Console

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar a página "Balanceamento de carga"

  2. Clique no nome do balanceador de carga HTTP(S) externo.
  3. Clique em Editar .
  4. Em Configuração de back-end, selecione um back-end e clique em Editar .
  5. Verifique se a opção Ativar o Cloud CDN está selecionada.
  6. Na parte inferior da janela, clique em Configurações avançadas.
  7. Em Veicular enquanto estiver desatualizado, selecione uma das seguintes opções:
    • 1 minuto
    • 5 minutos
    • 10 minutos
    • 30 minutos
    • 1 dia (recomendado)
    • 7 dias
  8. Clique em Atualizar.
  9. Clique em Atualizar novamente.

gcloud

Para buckets de back-end, use o comando gcloud compute backend-buckets create ou gcloud compute backend-buckets update com a sinalização --serve-while-stale.

Para serviços de back-end, use o comando gcloud compute backend-services create ou gcloud compute backend-services update com a sinalização --serve-while-stale.

gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --serve-while-stale=SECONDS
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --serve-while-stale=SECONDS

Exemplo:

gcloud compute backend-services update my-backend-service
    --serve-while-stale=180s

API

Para buckets de back-end, use a chamada de API Method: backendBuckets.insert ou Method: backendBuckets.update.

Para serviços de back-end, use a chamada de API Method: backendServices.insert ou Method: backendServices.update.

Use uma das seguintes chamadas de API:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

Adicione o seguinte snippet ao corpo da solicitação JSON:

"cdnPolicy": {
  "serveWhileStale": SECONDS
}

Como desativar a exibição de conteúdo desatualizado

Console

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar a página "Balanceamento de carga"

  2. Clique no nome do balanceador de carga HTTP(S) externo.
  3. Clique em Editar .
  4. Em Configuração de back-end, selecione um back-end e clique em Editar .
  5. Certifique-se de que Ativar Cloud CDN não esteja selecionado.
  6. Na parte inferior da janela, clique em Configurações avançadas.
  7. Em Exibir enquanto estiver desatualizado, selecione Desativar a exibição enquanto estiver desatualizado.
  8. Clique em Atualizar.
  9. Clique em Atualizar novamente.

gcloud

Para buckets de back-end, use o comando gcloud compute backend-buckets create ou gcloud compute backend-buckets update com o valor da sinalização --serve-while-stale definido como 0.

Para serviços de back-end, use o comando gcloud compute backend-services create ou gcloud compute backend-services update com o valor da sinalização --serve-while-stale definido como 0.

gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --serve-while-stale=0

API

Para buckets de back-end, use a chamada de API Method: backendBuckets.insert ou Method: backendBuckets.update.

Para serviços de back-end, use a chamada de API Method: backendServices.insert ou Method: backendServices.update.

Use uma das seguintes chamadas de API:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

Adicione o snippet a seguir ao corpo da solicitação JSON:

"cdnPolicy": {
  "serveWhileStale": 0
}