Comportamento de solicitações e respostas para origens personalizadas
Para entender como o CloudFront processa solicitações e respostas ao usar origens personalizadas, consulte as seguintes seções:
Tópicos
Como o CloudFront processa e encaminha solicitações para sua origem personalizada
Saiba como o CloudFront processa solicitações do visualizador e as encaminha para a origem personalizada.
Sumário
- Autenticação
- Duração do armazenamento em cache e TTL mínimo
- Endereços IP do cliente
- Autenticação SSL no lado do cliente
- Compactação
- Solicitações condicionais
- Cookies
- Compartilhamento de recursos de origem cruzada (CORS)
- Criptografia
- Solicitações GET que incluem um corpo
- Métodos HTTP
- Cabeçalhos de solicitação HTTP e comportamento do CloudFront (origens do Amazon S3 e personalizadas)
- Versão HTTP
- Tamanho máximo de uma solicitação e de um URL
- Associação OCSP
- Conexões persistentes
- Protocolos
- Strings de consulta
- Tentativas e tempo limite de conexão da origem
- Tempo limite de resposta da origem
- Solicitações simultâneas para o mesmo objeto (recolhimento de solicitações)
- User-AgentCabeçalho
Autenticação
Se você encaminhar o cabeçalho Authorization
para sua origem, será possível configurar o servidor de origem para solicitar a autenticação do cliente para os seguintes tipos de solicitações:
-
DELETE
-
GET
-
HEAD
-
PATCH
-
PUT
-
POST
Para solicitações OPTIONS
, é possível configurar a autenticação do cliente somente se usar as seguintes configurações do CloudFront:
-
O CloudFront foi configurado para encaminhar o cabeçalho
Authorization
à origem -
O CloudFront foi configurado para não armazenar a resposta a solicitações
OPTIONS
em cache
Para ter mais informações, consulte Configurar o CloudFront para encaminhar o cabeçalho Authorization.
É possível usar HTTP ou HTTPS para encaminhar solicitações para o servidor de origem. Para ter mais informações, consulte Usar HTTPS com o CloudFront.
Duração do armazenamento em cache e TTL mínimo
Para controlar por quanto tempo os objetos permanecem em um cache do CloudFront antes que o CloudFront encaminhe outra solicitação para a sua origem, você pode:
-
Configurar sua origem para adicionar um campo de cabeçalho
Cache-Control
ouExpires
a cada objeto. -
Especificar um valor de TTL mínimo nos comportamentos de cache do CloudFront.
-
Usar o valor padrão de 24 horas.
Para obter mais informações, consulte Gerenciar o tempo de permanência do conteúdo no cache (expiração).
Endereços IP do cliente
Se um visualizador enviar uma solicitação ao CloudFront e não incluir um cabeçalho de solicitação X-Forwarded-For
, o CloudFront obterá o endereço IP do visualizador na conexão TCP, adicionará um cabeçalho X-Forwarded-For
que inclui o endereço IP e encaminhará a solicitação à origem. Por exemplo, se o CloudFront obter o endereço IP 192.0.2.2
da conexão TCP, ele encaminhará o seguinte cabeçalho à origem:
X-Forwarded-For: 192.0.2.2
Se um visualizador enviar uma solicitação ao CloudFront e incluir um cabeçalho de solicitação X-Forwarded-For
, o CloudFront obterá o endereço IP do visualizador na conexão TCP, incluirá ele no fim do cabeçalho X-Forwarded-For
e encaminhará a solicitação à origem. Por exemplo, se a solicitação do visualizador incluir X-Forwarded-For:
192.0.2.4,192.0.2.3
e o CloudFront obtiver o endereço IP 192.0.2.2
da conexão TCP, ele encaminhará o seguinte cabeçalho à origem:
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
Algumas aplicações, como balanceadores de carga (inclusive o Elastic Load Balancing), firewalls de aplicações Web, proxies reversos, sistemas de prevenção de invasão e API Gateway, adicionam o endereço IP do servidor de borda do CloudFront que encaminhou a solicitação no fim do cabeçalho X-Forwarded-For
. Por exemplo, se o CloudFront incluir X-Forwarded-For: 192.0.2.2
em uma solicitação encaminhada ao ELB e o endereço IP do servidor de borda do CloudFront for 192.0.2.199, a solicitação recebida pela instância do EC2 conterá o seguinte cabeçalho:
X-Forwarded-For: 192.0.2.2,192.0.2.199
nota
O cabeçalho X-Forwarded-For
contém endereços IPv4 (como 192.0.2.44) e IPv6 (como 2001:0db8:85a3::8a2e:0370:7334).
Observe também que o cabeçalho X-Forwarded-For
pode ser modificado por cada nó no caminho para o servidor atual (CloudFront). Para obter mais informações, consulte a seção 8.1 do RFC 7239
Autenticação SSL no lado do cliente
O CloudFront não é compatível com a autenticação do cliente com certificados SSL no lado do cliente. Se uma origem solicitar um certificado no lado do cliente, o CloudFront interromperá a solicitação.
Compactação
Para ter mais informações, consulte Fornecer arquivos compactados.
Solicitações condicionais
Ao receber uma solicitação de um objeto que expirou de um cache de ponto de presença, o CloudFront encaminha a solicitação à origem a fim de obter a versão mais recente do objeto ou a confirmação da origem de que o cache do ponto de presença do CloudFront já tem a versão mais recente. Normalmente, ao enviar o objeto pela última vez ao CloudFront, a origem inclui um valor ETag
ou LastModified
, ou os dois, na resposta. Na nova solicitação encaminhada pelo CloudFront à origem, o CloudFront adiciona um destes (ou os dois):
-
Um cabeçalho
If-Match
ouIf-None-Match
com o valorETag
da versão expirada do objeto. -
Um cabeçalho
If-Modified-Since
com o valorLastModified
da versão expirada do objeto.
A origem usa essas informações para determinar se o objeto foi atualizado e, portanto, se deve retornar todo o objeto ao CloudFront ou apenas a um código de status HTTP 304 (não modificado).
nota
As solicitações condicionais If-Modified-Since
e If-None-Match
não são compatíveis com o CloudFront quando ele estiver configurado para encaminhar cookies (todos ou um subconjunto).
Para ter mais informações, consulte Conteúdo em cache com base em cookies.
Cookies
É possível configurar o CloudFront para encaminhar cookies à origem. Para obter mais informações, consulte Conteúdo em cache com base em cookies.
Compartilhamento de recursos de origem cruzada (CORS)
Se quiser que o CloudFront respeite as configurações de compartilhamento de recursos entre origens, configure o CloudFront para encaminhar o cabeçalho Origin
à origem. Para ter mais informações, consulte Conteúdo em cache com base nos cabeçalhos de solicitação.
Criptografia
É possível solicitar que os usuários usem HTTPS para enviar solicitações ao CloudFront e que o CloudFront as encaminhe à origem personalizada usando o protocolo usado pelo visualizador. Para mais informações, consulte as configurações da distribuição:
O CloudFront encaminha solicitações HTTPS para o servidor de origem usando os protocolos SSLv3, TLSv1.0, TLSv1.1 e TLSv1.2. Para origens personalizadas, é possível escolher os protocolos SSL a serem usados pelo CloudFront na comunicação com a origem:
-
Se você estiver usando o console do CloudFront, escolha os protocolos usando as caixas de seleção Origin SSL Protocols (Protocolos SSL da origem). Para obter mais informações, consulte Criar uma distribuição.
-
Se você estiver usando a API do CloudFront, especifique os protocolos usando o elemento
OriginSslProtocols
. Para mais informações, consulte OriginSslProtocols e DistributionConfig na Referência da API do Amazon CloudFront.
Se a origem for um bucket do Amazon S3, o CloudFront sempre usará o TLSv1.2.
Importante
Outras versões de SSL e TLS não são compatíveis.
Para mais informações sobre como usar HTTPS com o CloudFront, consulte Usar HTTPS com o CloudFront. Para ver as listas de criptografias compatíveis com o CloudFront para comunicação HTTPS entre os visualizadores e o CloudFront e entre o CloudFront e a origem, consulte Protocolos e cifras compatíveis entre visualizadores e o CloudFront.
Solicitações GET que incluem um corpo
Se a solicitação GET
do visualizador incluir um corpo, o CloudFront retornará o código de status HTTP 403 (Proibido).
Métodos HTTP
Se você configurar o CloudFront para processar todos os métodos HTTP compatíveis, ele aceitará as seguintes solicitações de visualizadores e as encaminhará à origem personalizada:
-
DELETE
-
GET
-
HEAD
-
OPTIONS
-
PATCH
-
POST
-
PUT
O CloudFront sempre armazena respostas às solicitações GET
e HEAD
em cache. Também é possível configurar o CloudFront para armazenar respostas a solicitações OPTIONS
em cache. O CloudFront não armazena em cache respostas a solicitações que usam outros métodos.
Para obter informações sobre como configurar se sua origem personalizada processa esses métodos ou não, consulte a documentação referente a ela.
Importante
Se você configurar o CloudFront para aceitar e encaminhar todos os métodos HTTP compatíveis com o CloudFront à origem, configure o servidor de origem para lidar com todos eles. Por exemplo, se você configurar do CloudFront para aceitar e encaminhar esses métodos porque deseja usar POST
, será necessário configurar o servidor de origem para lidar com solicitações DELETE
de forma apropriada para que os visualizadores não possam excluir recursos selecionados. Para obter mais informações, consulte a documentação do seu servidor HTTP.
Cabeçalhos de solicitação HTTP e comportamento do CloudFront (origens do Amazon S3 e personalizadas)
A tabela a seguir lista os cabeçalhos de solicitação HTTP que você pode encaminhar às origens personalizadas e do Amazon S3 (com as exceções observadas). Para cada cabeçalho, a tabela inclui informações sobre o seguinte:
-
O comportamento do CloudFront se você não configurar o CloudFront para encaminhar o cabeçalho à origem, o que faz com que ele armazene os objetos em cache com base nos valores de cabeçalho.
-
Se é possível configurar o CloudFront para armazenar os objetos em cache com base nos valores do cabeçalho em questão.
É possível configurar o CloudFront para armazenar os objetos em cache com base nos valores dos cabeçalhos
Date
eUser-Agent
, mas não recomendamos fazer isso. Há vários valores possíveis para esses cabeçalhos, e o armazenamento em cache com base nesses valores faz com que o CloudFront encaminhe significativamente mais solicitações à origem.
Para obter mais informações sobre o armazenamento em cache com base nos valores de cabeçalho, consulte Conteúdo em cache com base nos cabeçalhos de solicitação.
Cabeçalho | Comportamento se você não configurar o CloudFront para armazenar em cache com base nos valores de cabeçalho | O armazenamento em cache com base nos valores de cabeçalho é compatível |
---|---|---|
Outros cabeçalhos definidos |
Configurações de cache herdadas: o CloudFront encaminha os cabeçalhos para a origem. |
Sim |
|
O CloudFront remove o cabeçalho. |
Sim |
|
O CloudFront remove o cabeçalho. |
Sim |
|
Se o valor contiver Para obter mais informações, consulte Suporte à compactação e Fornecer arquivos compactados. |
Sim |
|
O CloudFront remove o cabeçalho. |
Sim |
|
|
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Não |
|
O CloudFront não adiciona o cabeçalho antes de encaminhar a solicitação à origem. Para obter mais informações, consulte Configurar o armazenamento em cache com base no protocolo da solicitação. |
Sim |
|
O CloudFront não adiciona o cabeçalho antes de encaminhar a solicitação à origem. Para obter mais informações, consulte Configurar o armazenamento em cache com base no tipo de dispositivo. |
Sim |
|
O CloudFront não adiciona o cabeçalho antes de encaminhar a solicitação à origem. Para obter mais informações, consulte Configurar o armazenamento em cache com base no tipo de dispositivo. |
Sim |
|
O CloudFront não adiciona o cabeçalho antes de encaminhar a solicitação à origem. Para obter mais informações, consulte Configurar o armazenamento em cache com base no tipo de dispositivo. |
Sim |
|
O CloudFront não adiciona o cabeçalho antes de encaminhar a solicitação à origem. |
Sim |
|
O CloudFront substitui esse cabeçalho por |
Não |
|
O CloudFront encaminha o cabeçalho à origem. |
Não |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
Se você configurar o CloudFront para encaminhar cookies, ele encaminhará o campo de cabeçalho |
Não |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim, mas não recomendado |
|
O CloudFront remove o cabeçalho. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront define o valor do nome de domínio da origem associada ao objeto solicitado. Não é possível fazer o armazenamento em cache com base no cabeçalho Host para origens do Amazon S3 ou MediaStore. |
Sim (personalizada) Não (S3 e MediaStore) |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Não |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Não |
|
O CloudFront remove o cabeçalho. |
Não |
|
O CloudFront remove o cabeçalho. |
Não |
|
O CloudFront remove o cabeçalho. |
Não |
|
O CloudFront encaminha o cabeçalho à origem. Para obter mais informações, consulte Como o CloudFront processa solicitações parciais de um objeto (Range GETs). |
Sim, por padrão |
|
O CloudFront remove o cabeçalho. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Não |
|
O CloudFront remove o cabeçalho. |
Não |
|
O CloudFront remove o cabeçalho. |
Não |
|
O CloudFront encaminha o cabeçalho à origem. |
Não |
|
O CloudFront remove o cabeçalho, a menos que você tenha estabelecido uma conexão WebSocket. |
Não (exceto para conexões WebSocket) |
|
O CloudFront substitui o valor desse campo de cabeçalho por |
Sim, mas não recomendado |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront encaminha o cabeçalho à origem. |
Sim |
|
O CloudFront adiciona o cabeçalho à solicitação do visualizador antes de encaminhá-la à origem. O valor do cabeçalho contém uma string criptografada que identifica exclusivamente a solicitação. |
Não |
|
O CloudFront remove todos os cabeçalhos |
Não |
|
O CloudFront encaminha o cabeçalho à origem. Para obter mais informações, consulte Endereços IP do cliente. |
Sim |
|
O CloudFront remove o cabeçalho. |
Não |
|
O CloudFront remove o cabeçalho. |
Sim |
|
O CloudFront remove o cabeçalho. |
Não |
Versão HTTP
O CloudFront encaminha as solicitações à origem personalizada usando HTTP/1.1.
Tamanho máximo de uma solicitação e de um URL
O tamanho máximo de uma solicitação, com o caminho, a query string (se houver) e os cabeçalhos, é de 20.480 bytes.
O CloudFront cria um URL com base na solicitação. O tamanho máximo do URL é de 8.192 bytes.
Se uma solicitação ou um URL ultrapassar esses limites máximos, o CloudFront retornará o código de status HTTP 413, Request Entity Too Large (Entidade de solicitação muito grande), ao visualizador e encerrará a conexão TCP com ele.
Associação OCSP
Quando um visualizador envia uma solicitação HTTPS para um objeto, tanto ele quanto o CloudFront devem confirmar com a autoridade de certificação (CA) se o certificado SSL do domínio não foi revogado. O OCSP Stapling acelera a validação do certificado permitindo que o CloudFront valide o certificado e armazene as respostas da CA em cache, a fim de que o cliente não precise validar o certificado diretamente com a CA.
A melhoria da performance do OCSP Stapling é mais acentuada quando o CloudFront recebe inúmeras solicitações HTTPS para objetos no mesmo domínio. Cada servidor em um ponto de presença do CloudFront deve enviar uma solicitação de validação separada. Quando o CloudFront recebe um grande número de solicitações HTTPS para o mesmo domínio, cada servidor no ponto de presença logo recebe uma resposta da CA que pode "grampear" em um pacote no handshake SSL. Quando o visualizador acreditar que o certificado é válido, o CloudFront poderá fornecer o objeto solicitado. Caso sua distribuição não tenha muito tráfego em um ponto de presença do CloudFront, é provável que novas solicitações sejam direcionadas para um servidor que ainda não validou o certificado com a CA. Nesse caso, o visualizador executa separadamente a etapa de validação, e o servidor do CloudFront fornece o objeto. Esse servidor do CloudFront também envia uma solicitação de validação para a CA para que, na próxima vez que receber uma solicitação com o mesmo nome de domínio, tenha uma resposta de validação da CA.
Conexões persistentes
Ao obter uma resposta da origem, o CloudFront tenta manter a conexão por alguns segundos caso chegue outra solicitação nesse período. A manutenção de uma conexão persistente economiza o tempo necessário para restabelecer a conexão TCP e executar outro handshake TLS para solicitações subsequentes.
Para obter mais informações, inclusive como configurar a duração de conexões persistentes, consulte Tempo limite keep alive (somente origens personalizadas) na seção Referência de configurações da distribuição.
Protocolos
O CloudFront encaminha solicitações HTTP ou HTTPS ao servidor de origem levando em consideração:
-
O protocolo da solicitação enviada pelo visualizador ao CloudFront: HTTP ou HTTPS.
-
O valor do campo Origin Protocol Policy (Política de protocolo da origem) no console do CloudFront ou, se você estiver usando a API do CloudFront, o elemento
OriginProtocolPolicy
no tipo complexoDistributionConfig
. No console do CloudFront, as opções são HTTP Only (Somente HTTP), HTTPS Only (Somente HTTPS) e Match Viewer (Corresponder visualizador).
Se você especificar HTTP Only (Somente HTTP) ou HTTPS Only (Somente HTTPS), o CloudFront encaminhará as solicitações ao servidor de origem usando o protocolo especificado, independentemente do protocolo da solicitação do visualizador.
Se você especificar Match Viewer (Corresponder visualizador), o CloudFront encaminhará as solicitações ao servidor de origem usando o protocolo da solicitação do visualizador. O CloudFront armazenará o objeto em cache somente uma vez se os visualizadores fizerem solicitações usando protocolos HTTP e HTTPS.
Importante
Se o CloudFront encaminhar uma solicitação à origem usando o protocolo HTTPS, e o servidor de origem retornar um certificado inválido ou autoassinado, o CloudFront interromperá a conexão TCP.
Para obter informações sobre como atualizar uma distribuição usando o console do CloudFront, consulte Atualizar uma distribuição. Para obter informações sobre como atualizar uma distribuição usando a API do CloudFront, acesse UpdateDistribution na Referência da API do Amazon CloudFront.
Strings de consulta
É possível configurar se o CloudFront encaminha parâmetros de query strings à origem. Para obter mais informações, consulte Conteúdo em cache com base em parâmetros de string de consulta.
Tentativas e tempo limite de conexão da origem
Tempo limite de conexão da origem é o número de segundos que o CloudFront aguarda ao tentar estabelecer uma conexão com a origem.
Tentativas de conexão da origem é o número de vezes que o CloudFront tenta se conectar à origem.
Juntas, essas configurações determinam por quanto tempo o CloudFront tenta se conectar à origem antes de fazer o failover para a origem secundária, no caso de um grupo de origens, ou retornar uma resposta de erro ao visualizador. Por padrão, o CloudFront aguarda até 30 segundos (3 tentativas de 10 segundos cada) antes de tentar se conectar à origem secundária ou retornar uma resposta de erro. Esse tempo pode ser reduzido especificando um tempo limite de conexão mais curto, menos tentativas ou ambos.
Para obter mais informações, consulte Controlar tempos limite e tentativas da origem.
Tempo limite de resposta da origem
O tempo limite de resposta da origem, também conhecido como tempo limite de leitura da origem ou tempo limite de solicitação da origem, aplica-se a estes dois valores:
-
A quantidade de tempo, em segundos, que o CloudFront aguarda uma resposta após o encaminhamento de uma solicitação à origem.
-
A quantidade de tempo, em segundos, que o CloudFront aguarda após o recebimento de um pacote de resposta da origem e antes do recebimento do próximo pacote.
O comportamento do CloudFront depende do método HTTP da solicitação do visualizador:
-
Solicitações
GET
eHEAD
: se a origem não responder ou parar de responder dentro da duração do tempo limite da resposta, o CloudFront interromperá a conexão. Se o número especificado de tentativas de conexão da origem for maior que 1, o CloudFront tentará obter uma resposta completa novamente. O CloudFront tenta até 3 vezes, conforme determinado pelo valor da configuração de tentativas de conexão da origem. Se a origem não responder durante a terceira tentativa, o CloudFront não tentará novamente enquanto não receber outra solicitação de conteúdo na mesma origem. -
Solicitações
DELETE
,OPTIONS
,PATCH
,PUT
ePOST
: se a origem não responder em 30 segundos, o CloudFront interromperá a conexão e não tentará entrar em contato com a origem novamente. O cliente pode reenviar a solicitação, se necessário.
Para mais informações, inclusive como configurar o tempo limite de resposta da origem, consulte Tempo limite de resposta (somente origens personalizadas).
Solicitações simultâneas para o mesmo objeto (recolhimento de solicitações)
Quando um local da borda do CloudFront recebe uma solicitação de um objeto, e o objeto não está no cache ou o objeto em cache expirou, o CloudFront envia imediatamente a solicitação para a origem. No entanto, se houver solicitações simultâneas para o mesmo objeto, ou seja, se solicitações adicionais para o mesmo objeto (com a mesma chave de cache) chegarem ao local da borda antes de o CloudFront receber a resposta à primeira solicitação, o CloudFront fará uma pausa antes de encaminhar solicitações adicionais à origem. Essa breve pausa ajuda a reduzir a carga na origem. O CloudFront envia a resposta da solicitação original a todas as solicitações recebidas enquanto estava em pausa. Isso é chamado de recolhimento de solicitações. Nos logs do CloudFront, a primeira solicitação é identificada como Miss
no campo x-edge-result-type
e as solicitações recolhidas são identificadas como Hit
. Para mais informações sobre os logs do CloudFront, consulte Registro em log do CloudFront e de funções de borda.
O CloudFront apenas recolhe solicitações que compartilham uma chave de cache. Se as solicitações adicionais não compartilharem a mesma chave de cache porque, por exemplo, você configurou o CloudFront para armazenar em cache com base nas strings de consulta, nos cookies ou nos cabeçalhos da solicitação, o CloudFront encaminhará todas as solicitações com uma chave de cache exclusiva à origem.
Se quiser evitar o recolhimento de todas as solicitações, será possível usar a política de cache gerenciada CachingDisabled
, que também impede o armazenamento em cache. Para ter mais informações, consulte Usar políticas de cache gerenciadas.
Se você quiser evitar o recolhimento das solicitações para objetos específicos, defina a TTL mínima para o comportamento de cache como 0 e configure a origem para enviar Cache-Control:
private
, Cache-Control: no-store
, Cache-Control:
no-cache
, Cache-Control: max-age=0
ou Cache-Control: s-maxage=0
. Essas configurações vão aumentar a carga na origem e introduzir latência adicional para as solicitações simultâneas que são pausadas enquanto o CloudFront aguarda a resposta à primeira solicitação.
Importante
Atualmente, o CloudFront não comporta recolher solicitações caso você habilite o encaminhamento de cookies na política de cache, na política de solicitação de origem ou nas configurações de cache herdadas.
User-Agent
Cabeçalho
Se você quiser que o CloudFront armazene diferentes versões dos objetos em cache com base no dispositivo usado pelo usuário para visualizar o conteúdo, recomendamos configurar o CloudFront para encaminhar um ou mais dos cabeçalhos à origem personalizada:
-
CloudFront-Is-Desktop-Viewer
-
CloudFront-Is-Mobile-Viewer
-
CloudFront-Is-SmartTV-Viewer
-
CloudFront-Is-Tablet-Viewer
Com base no valor do cabeçalho User-Agent
, o CloudFront define o valor desses cabeçalhos como true
ou false
antes de encaminhar a solicitação para a origem. Se o dispositivo se encaixar em mais de uma categoria, mais de um valor poderá ser true
. Por exemplo, para alguns tablets, o CloudFront pode definir tanto CloudFront-Is-Mobile-Viewer
quanto CloudFront-Is-Tablet-Viewer
como true
. Para mais informações sobre como configurar o CloudFront para armazenar em cache com base nos cabeçalhos de solicitação, consulte Conteúdo em cache com base nos cabeçalhos de solicitação.
É possível configurar o CloudFront para armazenar os objetos em cache com base nos valores do cabeçalho User-Agent
, mas não recomendamos fazer isso. Há vários valores possíveis para o cabeçalho User-Agent
, e o armazenamento em cache com base nesses valores faz com que o CloudFront encaminhe significativamente mais solicitações à origem.
Se você não configurar o CloudFront para armazenar os objetos em cache com base nos valores do cabeçalho User-Agent
, o CloudFront adicionará um cabeçalho User-Agent
com o seguinte valor antes de encaminhar uma solicitação à origem:
User-Agent = Amazon CloudFront
O CloudFront adiciona esse cabeçalho, independentemente se a solicitação do visualizador inclui um cabeçalho User-Agent
ou não. Se a solicitação do visualizador incluir um cabeçalho User-Agent
, o CloudFront o removerá.
Como o CloudFront processa respostas da sua origem personalizada
Saiba como o CloudFront processa respostas da origem personalizada.
Sumário
Respostas 100 Continue
Não é possível que a origem envie mais de uma resposta 100-Continue ao CloudFront. Após a primeira resposta 100-Continue, o CloudFront espera uma resposta HTTP 200 OK. Se a origem enviar outra resposta 100-Continue após a primeira, o CloudFront retornará um erro.
Armazenamento em cache
-
Certifique-se de que o servidor de origem defina valores válidos e precisos para os campos de cabeçalho
Date
eLast-Modified
. -
Normalmente, o CloudFront respeita um cabeçalho
Cache-Control: no-cache
na resposta da origem. Para ver uma exceção, consulte Solicitações simultâneas para o mesmo objeto (recolhimento de solicitações).
Solicitações canceladas
Se o objeto não estiver no cache de ponto de presença e o visualizador encerrar a sessão (por exemplo, fechar o navegador) depois de o CloudFront obter o objeto da origem, mas antes de conseguir fornecer o objeto solicitado, ele não armazenará o objeto em cache no ponto de presença.
Negociação de conteúdo
Se a origem retornar Vary:*
na resposta e o valor de Minimum TTL do comportamento de cache correspondente for 0, o CloudFront armazenará o objeto em cache, mas, mesmo assim, encaminhará todas as solicitações subsequentes do objeto à origem a fim de confirmar se o cache contém a versão mais recente do objeto. O CloudFront não inclui cabeçalhos condicionais, como If-None-Match
ou If-Modified-Since
. Consequentemente, a origem retorna o objeto ao CloudFront em resposta a cada solicitação.
Se a origem retornar Vary:*
na resposta e o valor de Minimum TTL do comportamento de cache correspondente for qualquer outro valor, o CloudFront processará o cabeçalho Vary
conforme descrito em Cabeçalhos de resposta HTTP que o CloudFront remove ou substitui.
Cookies
Se você permitir cookies para um comportamento de cache e a origem retornar cookies com um objeto, o CloudFront armazenará tanto o objeto quanto os cookies em cache. Observe que isso reduz a capacidade de armazenamento em cache de um objeto. Para obter mais informações, consulte Conteúdo em cache com base em cookies.
Conexões TCP interrompidas
Se a conexão TCP entre o CloudFront e a origem cair enquanto a origem estiver retornando um objeto ao CloudFront, o comportamento do CloudFront dependerá da inclusão ou não de um cabeçalho Content-Length
na resposta pela origem:
-
Cabeçalho Content-Length: o CloudFront retorna o objeto ao visualizador assim que o obtém da origem. No entanto, se o valor do cabeçalho
Content-Length
não corresponder ao tamanho do objeto, o CloudFront não o armazenará em cache. -
Transfer-Encoding: Chunked: o CloudFront retorna o objeto ao visualizador assim que o obtém da origem. No entanto, se a resposta em partes não for concluída, o CloudFront não armazenará o objeto em cache.
-
Sem cabeçalho Content-Length: o CloudFront retorna o objeto ao visualizador e o armazena em cache, mas o objeto não pode ser concluído. Sem um cabeçalho
Content-Length
, o CloudFront não consegue determinar se a conexão TCP foi interrompida de forma acidental ou proposicional.
Recomendamos que você configure o servidor HTTP para adicionar um cabeçalho Content-Length
a fim de impedir que o CloudFront armazene objetos parciais em cache.
Cabeçalhos de resposta HTTP que o CloudFront remove ou substitui
O CloudFront remove ou atualiza os seguintes campos de cabeçalho antes de encaminhar a resposta da origem ao visualizador:
-
Set-Cookie
: se você configurar o CloudFront para encaminhar cookies, ele encaminhará o campo de cabeçalhoSet-Cookie
aos clientes. Para obter mais informações, consulte Conteúdo em cache com base em cookies. -
Trailer
-
Transfer-Encoding
: se a origem retornar esse campo de cabeçalho, o CloudFront definirá o valor dechunked
antes de retornar a resposta ao visualizador. -
Upgrade
-
Vary
– Observe o seguinte:-
Se você configurar o CloudFront para encaminhar os cabeçalhos específicos do dispositivo à origem (
CloudFront-Is-Desktop-Viewer
,CloudFront-Is-Mobile-Viewer
,CloudFront-Is-SmartTV-Viewer
,CloudFront-Is-Tablet-Viewer
) e a origem para retornarVary:User-Agent
ao CloudFront, o CloudFront retornaráVary:User-Agent
ao visualizador. Para obter mais informações, consulte Configurar o armazenamento em cache com base no tipo de dispositivo. -
Se você configurar a origem para incluir
Accept-Encoding
ouCookie
no cabeçalhoVary
, o CloudFront incluirá os valores na resposta ao visualizador. -
Se você configurar o CloudFront para encaminhar cabeçalhos à origem e configurar a origem para retornar os nomes de cabeçalho ao CloudFront no cabeçalho
Vary
(por exemplo,Vary:Accept-Charset,Accept-Language
), o CloudFront retornará o cabeçalhoVary
com esses valores ao visualizador. -
Para obter informações sobre como o CloudFront processa um valor de
*
no cabeçalhoVary
, consulte Negociação de conteúdo. -
Se você configurar a origem para incluir qualquer outro valor no cabeçalho
Vary
, o CloudFront removerá os valores antes de retornar a resposta ao visualizador.
-
-
Via
: o CloudFront define o seguinte valor na resposta para o visualizador:Via:
versão HTTP
string alfanumérica
.cloudfront.net (CloudFront)
Por exemplo, o valor é semelhante ao seguinte:
Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)
Tamanho máximo do arquivo armazenável em cache
O tamanho máximo do corpo de uma resposta salva pelo CloudFront no cache é de 50 GB. Isso inclui respostas de transferência em partes que não especificam o valor de cabeçalho Content-Length
.
É possível usar o CloudFront para armazenar em cache um objeto maior que isso usando solicitações de intervalo para solicitar os objetos em partes que sejam cada uma de 50 GB ou menores. O CloudFront armazena essas partes em cache porque cada uma delas é de 50 GB ou menor. Depois que o visualizador recuperar todas as partes do objeto, ele poderá reconstruir o objeto original, maior. Para ter mais informações, consulte Usar solicitações de intervalo para armazenar objetos grandes em cache.
Origem indisponível
Se o servidor de origem estiver indisponível e o CloudFront receber uma solicitação de um objeto que está no cache do ponto de presença, mas expirou (por exemplo, porque o período especificado na diretiva Cache-Control max-age
passou), o CloudFront fornecerá a versão expirada do objeto ou uma página de erro personalizada. Para mais informações sobre o comportamento do CloudFront ao configurar páginas de erro personalizadas, consulte Como o CloudFront processará erros quando páginas de erro personalizadas estiverem configuradas.
Em alguns casos, um objeto que é raramente solicitado é removido e se torna indisponível no ponto de presença de caches. O CloudFront não pode fornecer um objeto que foi removido.
Redirecionamentos
Se você alterar a localização de um objeto no servidor de origem, poderá configurar o servidor da Web para redirecionar as solicitações para o novo local. Depois de configurar o redirecionamento, a primeira vez que um visualizador enviar uma solicitação para o objeto, o CloudFront a enviará à origem, e a origem responderá com um redirecionamento (por exemplo, 302 Moved Temporarily
). O CloudFront armazena o redirecionamento em cache e o retorna ao visualizador. O CloudFront não acompanha o redirecionamento.
Você pode configurar o servidor da web para redirecionar as solicitações para um destes locais:
-
O novo URL do objeto no servidor de origem. Ao seguir o redirecionamento para o novo URL, o visualizador ignora o CloudFront e vai diretamente à origem. Por isso, recomendamos que você não redirecione as solicitações para o novo URL do objeto na origem.
-
O novo URL do CloudFront do objeto. Quando o visualizador envia a solicitação que contém o novo URL do CloudFront, o CloudFront obtém o objeto do novo local na origem, armazena-o em cache no ponto de presença e retorna-o ao visualizador. As solicitações subsequentes do objeto são fornecidas pelo ponto de presença. Isso evita a latência e a carga associadas à solicitação do objeto pelo visualizador da origem. No entanto, cada nova solicitação do objeto será cobrada por duas solicitações ao CloudFront.
Transfer-Encoding
Cabeçalho
O CloudFront é compatível apenas com o valor chunked
do cabeçalho Transfer-Encoding
. Se a origem retornar Transfer-Encoding: chunked
, o CloudFront retornará o objeto ao cliente assim que for recebido no ponto de presença e o armazenará em partes para solicitações subsequentes.
Se o visualizador fizer uma solicitação Range GET
e a origem retornar Transfer-Encoding: chunked
, o CloudFront retornará o objeto inteiro ao visualizador, em vez do intervalo solicitado.
Recomendamos que você use codificação em partes se o tamanho do conteúdo da sua resposta não puder ser predeterminado. Para obter mais informações, consulte Conexões TCP interrompidas.