Interação do AWS Elemental MediaStore com caches HTTP - AWSElemental MediaStore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Interação do AWS Elemental MediaStore com caches HTTP

O AWS Elemental MediaStore armazena objetos para que eles possam ser armazenados em cache de forma correta e eficiente por redes de entrega de conteúdo (CDNs) como o Amazon CloudFront. Quando um usuário final ou CDN recupera um objeto do MediaStore, o serviço retorna cabeçalhos HTTP que afetam o comportamento do armazenamento em cache do objeto. (Os padrões para o comportamento do armazenamento em cache HTTP 1.1 são encontrados em RFC2616 seção 13.) Estes cabeçalhos são:

  • ETag (não personalizável): o cabeçalho da tag de entidade é um identificador exclusivo para a resposta enviada pelo MediaStore. CDNs e navegadores da web compatíveis com os padrões utilizam essa tag como chave para armazenar em cache o objeto. O MediaStore gera automaticamente um ETag para cada objeto quando ele é carregado. É possível visualizar os detalhes de um objeto para determinar o valor de sua ETag.

  • Last-Modified (não personalizável): o valor desse cabeçalho indica a data e a hora em que o objeto foi modificado. O MediaStore gera automaticamente esse valor quando o objeto é carregado.

  • Cache-Control (personalizável) – o valor deste cabeçalho controla por quanto tempo um objeto deve permanecer armazenado em cache antes de a CDN verificar se ele foi modificado. É possível definir esse cabeçalho como qualquer valor no upload de um objeto em um contêiner do MediaStore usando a CLI ou a API. O conjunto completo de valores válidos é descrito na documentação HTTP/1.1. Se você não definir esse valor ao fazer upload de um objeto, o MediaStore não retornará esse cabeçalho quando o objeto for recuperado.

    Um caso de uso comum para o cabeçalho Cache-Control é a especificação de uma duração para armazenar o objeto em cache. Por exemplo, suponha que você tenha um arquivo de manifesto de vídeo que está sendo frequentemente substituído por um codificador. É possível definir a max-age como 10 para indicar que o objeto deve permanecer armazenado em cache por apenas 10 segundos. Ou suponha que você tenha um segmento de vídeo armazenado que nunca será substituído. É possível definir a max-age para esse objeto como 31536000 para armazená-lo em cache por cerca de 1 ano.

Solicitações condicionais

Solicitações condicionais ao MediaStore

O MediaStore responde de forma idêntica a solicitações condicionais (usando cabeçalhos de solicitação como If-Modified-Since e If-None-Match, conforme descrito em RFC7232) e solicitações incondicionais. Isso significa que quando o MediaStore recebe uma solicitação GetObject válida, o serviço sempre retorna o objeto, mesmo que o cliente já tenha o objeto.

Solicitações condicionais para CDNs

As CDNs que fornecem conteúdo em nome do podem processar solicitações condicionais retornando 304 Not Modified, conforme descrito em RFC7232 seção 4.1. Isso indica que não há necessidade de transferir o conteúdo completo do objeto, porque o solicitante já tem um objeto correspondente à solicitação condicional.

As CDNs (e outros caches compatíveis com HTTP/1.1) baseiam essas decisões nos cabeçalhos ETag e Cache-Control encaminhados pelos servidores de origem. Para controlar a frequência com que as CDNs consultam os servidores de origem do MediaStore por atualizações de objetos recuperados repetidamente, defina os cabeçalhos Cache-Control desses objetos ao fazer upload deles para o MediaStore.