Eu uso o Amazon CloudFront para fornecer objetos armazenados no Amazon Simple Storage Service (Amazon S3). Eu atualizei meus objetos no Amazon S3, mas minha distribuição do CloudFront ainda está fornecendo as versões anteriores desses arquivos.
Breve descrição
Por padrão, o CloudFront armazena em cache uma resposta do Amazon S3 por 24 horas (TTL padrão de 86.400 segundos). Se sua solicitação chegar a um local da borda que atendeu a resposta do Amazon S3 em 24 horas, o CloudFront usará a resposta em cache. Isso acontece mesmo se você atualizou o conteúdo no Amazon S3.
Use uma das seguintes formas de enviar o conteúdo atualizado do Amazon S3 a partir do CloudFront:
Resolução
Invalide os objetos do Amazon S3
É possível invalidar um objeto do Amazon S3 para removê-lo do cache da distribuição do CloudFront. Depois que o objeto é removido do cache, a próxima solicitação recupera o objeto diretamente do Amazon S3.
Observação:
- Não é possível invalidar versões específicas de um objeto que usa cookies ou cabeçalhos para variar a resposta. Nesse caso, o CloudFront invalida todas as versões do objeto.
- Cada conta da AWS tem 1.000 caminhos de invalidação gratuitos por mês. Para obter mais informações, consulte preços do Amazon CloudFront.
Ao criar uma invalidação, certifique-se de que os caminhos do objeto atendam aos seguintes requisitos:
- Os caminhos do objeto devem ser para objetos individuais ou devem terminar com o caractere curinga (*). Por exemplo, não é possível executar uma invalidação em um caminho semelhante a /images/*.jpeg. Isso ocorre porque o caminho não é para um objeto individual e não termina em um caractere curinga.
- O caminho especificado deve corresponder exatamente à capitalização do caminho do objeto. As solicitações de invalidação diferenciam maiúsculas de minúsculas.
- Para remover versões específicas de um objeto com base em uma string de consulta, inclua parâmetros de string de consulta no caminho de invalidação.
A invalidação de objetos normalmente leva de 10 a 100 segundos para ser concluída. Para verificar o status de uma invalidação, visualize sua distribuição no console do CloudFront.
Use o versionamento de arquivos
Se você atualiza conteúdo com frequência, é uma prática recomendada usar o versionamento de arquivos para limpar o cache da distribuição do CloudFront. Para atualizações frequentes de cache, o versionamento do arquivo pode custar menos do que a invalidação.
Para usar o versionamento do arquivo, conclua as seguintes etapas:
- Armazene novas versões do objeto na origem com o número da versão no nome da chave. Por exemplo, se você atualizar /image_v1.png, armazene uma nova versão do objeto como /image_v2.png.
- Atualize o objeto na origem, mas armazene em cache com base em uma string de consulta com a versão do arquivo. Por exemplo, a string de consulta é atualizada de /image.png?ver=1 para /image.png?ver=2. É possível usar uma política de cache para especificar quais strings de consulta estão incluídas na chave de cache e nas solicitações de origem.
Observação: Ainda é possível solicitar a versão anterior (/image.png?ver=1) enquanto estiver disponível no cache do CloudFront.
Considere as seguintes vantagens e desvantagens de cada método de versionamento de arquivos:
- É possível armazenar novas versões do objeto na origem para reverter as alterações para versões anteriores que ainda estão disponíveis com os nomes anteriores. No entanto, se você armazenar várias versões de um objeto, seus custos de armazenamento poderão aumentar.
- Atualizações de objeto na origem e armazenamento em cache com base na string de consulta podem reduzir seus custos de armazenamento. Para se preparar para qualquer reversão, é uma prática recomendada guardar as versões anteriores do arquivo off-line.
Observação: Os nomes de arquivos ou diretórios com versões especificadas não estão relacionados ao Versionamento do S3. O Versionamento do S3 não atualiza automaticamente o conteúdo. Certifique-se de especificar os caminhos do arquivo corretamente, pois não é possível cancelar uma solicitação de invalidação depois que ela for iniciada.
Informações relacionadas
Gerenciar o tempo de permanência do conteúdo no cache (validade)
Encaminhamento e armazenamento em cache de strings de consulta