Armazenar em cache o conteúdo com base em parâmetros de string de consulta - Amazon CloudFront

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á.

Armazenar em cache o conteúdo com base em parâmetros de string de consulta

Alguns aplicativos web usam query strings para enviar informações para a origem. Uma string de consulta é a parte de uma solicitação da web que aparece após um caractere ?. Ela pode conter um ou mais parâmetros separados por caracteres &. No seguinte exemplo, a string de consulta inclui dois parâmetros, color = red e size = grandes:

https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

Para distribuições, você pode escolher se deseja CloudFront encaminhar cadeias de caracteres de consulta para sua origem e se deseja armazenar em cache seu conteúdo com base em todos os parâmetros ou nos parâmetros selecionados. Por que isso pode ser útil? Considere o seguinte exemplo.

Imagine que seu site esteja disponível em cinco idiomas. A estrutura do diretório e os nomes de arquivo de todas as cinco versões do site são idênticos. Quando um usuário visualiza seu site, as solicitações são encaminhadas para CloudFront incluir um parâmetro de sequência de caracteres de consulta de idioma com base no idioma escolhido pelo usuário. Você pode configurar CloudFront para encaminhar cadeias de caracteres de consulta para a origem e para o cache com base no parâmetro de idioma. Se você configurar o servidor da web para retornar a versão de uma página correspondente ao idioma selecionado, o CloudFront armazenará em cache a versão de cada idioma separadamente, com base no valor do parâmetro de string de consulta do idioma.

Neste exemplo, se a página principal do seu site formain.html, as cinco solicitações a seguir farão com que o cache seja main.html cinco vezes, uma vez para cada valor do parâmetro da string de consulta de idioma: CloudFront

  • https://d111111abcdef8.cloudfront.net/main.html?language=de

  • https://d111111abcdef8.cloudfront.net/main.html?language=en

  • https://d111111abcdef8.cloudfront.net/main.html?language=es

  • https://d111111abcdef8.cloudfront.net/main.html?language=fr

  • https://d111111abcdef8.cloudfront.net/main.html?language=jp

Observe o seguinte:

  • Alguns servidores HTTP não processam parâmetros de query string e, portanto, não retornam diferentes versões de um objeto com base nos valores de parâmetro. Para essas origens, se você configurar CloudFront para encaminhar os parâmetros da sequência de caracteres de consulta para a origem, CloudFront ainda armazenará em cache com base nos valores dos parâmetros, mesmo que a origem retorne versões idênticas do objeto CloudFront para cada valor do parâmetro.

  • Para que os parâmetros de string de consulta funcionem conforme descrito no exemplo acima com os idiomas, é necessário usar o caractere & como delimitador entre os parâmetros da string de consulta. Se você usar um delimitador diferente, poderá obter resultados inesperados, dependendo dos parâmetros especificados para uso como base CloudFront para o armazenamento em cache e da ordem em que os parâmetros aparecem na string de consulta.

    Os exemplos a seguir mostram o que acontece se você usar um delimitador diferente e configurar CloudFront para armazenar em cache com base somente no parâmetro: color

    • Na solicitação a seguir, CloudFront armazena seu conteúdo em cache com base no valor do color parâmetro, mas CloudFront interpreta o valor como vermelho; size=large:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red;size=large

    • Na solicitação a seguir, CloudFront armazena seu conteúdo em cache, mas não baseia o armazenamento em cache nos parâmetros da sequência de caracteres de consulta. Isso ocorre porque você configurou CloudFront para armazenar em cache com base no color parâmetro, mas CloudFront interpreta a sequência de caracteres a seguir como contendo somente um size parâmetro que tem um valor de large; color=red:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large;color=red

Você pode configurar CloudFront para fazer o seguinte:

  • Não encaminhar query strings para a origem. Se você não encaminhar query strings, o CloudFront não armazenará em cache com base nos parâmetros de query string.

  • Encaminhar query strings para a origem e armazenar em cache com base em todos os parâmetros na query string.

  • Encaminhar query strings para a origem e armazenar em cache com base em parâmetros específicos na query string.

Para ter mais informações, consulte Otimizar o armazenamento em cache.

Configurações do console e da API para encaminhamento e armazenamento de strings de consulta em cache

Para configurar o encaminhamento e o armazenamento em cache da sequência de caracteres de consulta no CloudFront console, consulte as seguintes configurações em: Valores especificados ao criar ou atualizar uma distribuição

Para configurar o encaminhamento e o armazenamento em cache da sequência de caracteres de consulta com a CloudFront API, consulte as seguintes configurações DistributionConfigWithTagsna DistributionConfigAmazon CloudFront API Reference:

  • QueryString

  • QueryStringCacheKeys

Otimizar o armazenamento em cache

Ao configurar o CloudFront cache com base nos parâmetros da sequência de caracteres de consulta, você pode seguir as etapas a seguir para reduzir o número de solicitações que são CloudFront encaminhadas para sua origem. Quando os CloudFront pontos de presença servem objetos, você reduz a carga no seu servidor de origem e reduz a latência porque os objetos são servidos a partir de locais mais próximos dos seus usuários.

Armazenamento em cache baseado apenas em parâmetros para os quais a origem retorna diferentes versões de um objeto

Para cada parâmetro de sequência de caracteres de consulta para o qual seu aplicativo web encaminha CloudFront, CloudFront encaminha solicitações para sua origem para cada valor de parâmetro e armazena em cache uma versão separada do objeto para cada valor de parâmetro. Isso será verdadeiro mesmo se a sua origem sempre retornar o mesmo objeto, independentemente do valor do parâmetro. Para vários parâmetros, o número de solicitações e o número de objetos se multiplicam. Por exemplo, se as solicitações de um objeto incluírem dois parâmetros com três valores diferentes cada, o CloudFront armazenará seis versões do objeto em cache, supondo que você siga as outras recomendações desta seção.

Recomendamos que você configure CloudFront para armazenar em cache com base somente nos parâmetros da sequência de caracteres de consulta para os quais sua origem retorna versões diferentes e que considere cuidadosamente os méritos do armazenamento em cache com base em cada parâmetro. Por exemplo, imagine que você tem um site de varejo. Você tem fotos de uma jaqueta em seis cores diferentes, e ela tem 10 opções de tamanhos diferentes. As imagens que você tem da jaqueta mostram a cores diferentes, mas não os tamanhos. Para otimizar o armazenamento em cache, você deve CloudFront configurar o cache com base somente no parâmetro de cor, não no parâmetro de tamanho. Isso aumenta a probabilidade de CloudFront atender a uma solicitação do cache, o que melhora o desempenho e reduz a carga em sua origem.

Sempre liste os parâmetros na mesma ordem

A ordem dos parâmetros é importante em query strings. No exemplo a seguir, as query strings são idênticas, exceto pelo fato de os parâmetros estarem em ordem diferente. Isso faz com CloudFront que você encaminhe duas solicitações separadas de image.jpg para sua origem e armazene em cache duas versões separadas do objeto:

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red&size=large

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large&color=red

Recomendamos que você sempre indique os nomes de parâmetro na mesma ordem, como em ordem alfabética.

Sempre use a mesma letra (maiúscula ou minúscula) para os nomes e valores de parâmetro

CloudFront considera o caso dos nomes e valores dos parâmetros ao armazenar em cache com base nos parâmetros da sequência de caracteres de consulta. No exemplo a seguir, as query strings são idênticas, exceto pelo formato das letras nos nomes e valores do parâmetro. Isso faz com CloudFront que você encaminhe quatro solicitações separadas de image.jpg para sua origem e armazene em cache quatro versões separadas do objeto:

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?color=Red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?Color=red

  • https://d111111abcdef8.cloudfront.net/images/image.jpg?Color=Red

Recomendamos que você use letras maiúsculas/minúsculas de forma consistente nos nomes e valores de parâmetro, como todas as letras minúsculas.

Não use nomes de parâmetro em conflito com signed URLs

Se você estiver usando URLs assinados para restringir o acesso ao seu conteúdo (se tiver adicionado assinantes confiáveis à sua distribuição), CloudFront remova os seguintes parâmetros da sequência de caracteres de consulta antes de encaminhar o restante do URL para sua origem:

  • Expires

  • Key-Pair-Id

  • Policy

  • Signature

Se você estiver usando URLs assinados e quiser configurar CloudFront para encaminhar cadeias de caracteres de consulta para sua origem, seus próprios parâmetros de sequência de caracteres de consulta não podem ser nomeados comoExpires, Key-Pair-IdPolicy, ou. Signature

Parâmetros de sequência de caracteres de consulta e registros CloudFront padrão (registros de acesso)

Se você ativar o registro, CloudFront registrará o URL completo, incluindo os parâmetros da sequência de caracteres de consulta. Isso é verdade independentemente de você ter configurado CloudFront para encaminhar cadeias de caracteres de consulta para a origem. Para obter mais informações sobre CloudFront registro em log, consulteConfigurar e usar logs padrão (logs de acesso).