O que é armazenamento de imagens em cache?

O armazenamento de imagens em cache guarda respostas de imagem obtidas ou geradas para que solicitações posteriores possam reutilizá-las, geralmente em um navegador ou em um nó de borda de uma CDN próximo de quem visualiza a imagem. Assim, uma solicitação repetida evita a transferência da origem ou o trabalho de transformação enquanto a entrada não tiver sido removida ou invalidada e sua política de validade ainda permitir a reutilização.

Como funciona o armazenamento de imagens em cache

O armazenamento de imagens em cache pode ocorrer em um navegador, uma aplicação, um serviço de transformação, uma CDN ou em várias camadas ao mesmo tempo. O objeto reutilizável pode ser um arquivo original ou uma versão derivada selecionada por dimensões, recorte, densidade, qualidade e formato negociado. Uma chave e uma política de validade bem definidas permitem que solicitações de transformação idênticas convirjam para um único resultado, enquanto a validação ou a invalidação reconecta esse resultado às alterações no arquivo de origem.

Informações essenciais

  1. O que deve fazer parte da chave de cache? Todo valor da solicitação que altera a resposta, e nenhum que não a altera. Para um endpoint de transformação, isso inclui pelo menos toda entrada que altera os bytes de saída: omitir o modo de recorte, o ponto focal, a orientação ou a qualidade pode retornar uma versão derivada válida, mas incorreta, enquanto incluir valores que não afetam a resposta armazena duplicatas e reduz a taxa de acertos de cache. Confira por onde seus parâmetros passam, pois os padrões das CDNs variam: a chave de cache padrão do Amazon CloudFront é o nome de domínio da distribuição e o caminho da URL, portanto ?w=300 e ?w=600 compartilham um único objeto em cache até que uma política de cache adicione a string de consulta; a chave padrão da Cloudflare inclui a string de consulta completa; os buckets de backend do Google Cloud CDN incluem por padrão apenas os parâmetros de consulta conhecidos pelo Cloud Storage, e os demais são adicionados por uma lista de inclusão.
  2. A negociação de formato com base em Accept exige que cada cache diferencie suas entradas por esse valor. Se uma URL retorna AVIF, WebP ou JPEG dependendo do cabeçalho Accept da solicitação, envie Vary: Accept para que cada cache no caminho saiba que a resposta depende desse cabeçalho e confirme que sua CDN realmente mantém os formatos separados, pelo tratamento de Vary ou por uma chave explícita de formato; caso contrário, um cache pode entregar a um cliente uma codificação escolhida para outro cliente. Uma chave apenas na CDN não informa nada aos caches posteriores à CDN. O suporte varia. A Cloudflare não considera Vary por padrão, exceto para Accept-Encoding, e oferece uma configuração separada chamada Vary for Images. O Google Cloud CDN respeita Vary: Accept e mantém uma entrada separada para cada valor distinto de Accept, mas não permite configurar Accept como cabeçalho da chave de cache porque ele tem muitos valores. Colocar o formato na URL evita essa dependência; o navegador pode então escolher, por exemplo, entre as fontes de um elemento picture, cada uma declarando um type.
  3. Substituir um original no mesmo caminho não altera a URL de nenhum arquivo derivado, portanto cada cache que contém um deles pode continuar a servi-lo até que a entrada seja expurgada ou expire e seja revalidada; uma política que permite servir conteúdo desatualizado, como stale-while-revalidate, prolonga ainda mais esse período. Se expurgar o original também remove suas variantes depende do provedor: o Fastly Image Optimizer expurga o original e todas as variantes em uma única solicitação, e as transformações de imagem da Cloudflare expurgam as versões otimizadas de uma imagem quando a URL do original é expurgada, e não individualmente. Quando os arquivos derivados são armazenados em cache como URLs independentes sem esse vínculo, use o expurgo por tag, prefixo ou URL explícita que o provedor oferece. Um expurgo na CDN não alcança os caches dos navegadores. Uma nova URL de arquivo derivado contorna todos os caches, inclusive o do navegador: coloque uma versão ou um hash do conteúdo da origem no caminho ou em um parâmetro de consulta que faça parte da chave de cache e faça as páginas referenciarem a nova URL. Se a camada de transformação também armazena o original em cache, como faz a da Cloudflare, expurgue ou versione a origem também, ou o novo arquivo derivado poderá ser criado a partir da imagem antiga.
  4. Uma variante em cache não é um arquivo armazenado. O cache de um navegador só volta a servir o mesmo usuário, portanto um serviço de transformação que não mantém uma cópia de sua saída depende de um cache compartilhado à sua frente, normalmente uma CDN, para evitar repetir o trabalho para outras pessoas. Uma CDN pode remover uma entrada antes que ela expire para abrir espaço para outro conteúdo, e cada localidade de borda preenche seu próprio cache, portanto a origem ou o serviço de transformação precisa conseguir produzir qualquer variante novamente a qualquer momento, e o original precisa permanecer disponível. Uma solicitação que nenhuma camada de cache consegue atender incorre novamente no custo de obtenção e transformação, e cada variante é uma entrada separada: a Cloudflare, por exemplo, armazena em cache separadamente cada combinação única de imagem de origem e parâmetros. Uma camada anterior pode atenuar isso quando a CDN oferece uma; o Fastly Image Optimizer armazena a imagem transformada em cache tanto em sua camada de proteção quanto na borda.

Quando o armazenamento de imagens em cache é importante

Armazene variantes transformadas em cache para reduzir a latência, a carga de processamento e o uso de largura de banda quando dimensões e formatos se repetem. Inclua as entradas da transformação na chave, ou uma variante poderá ser servida para outra solicitação.

Como a Transloadit ajuda com o armazenamento de imagens em cache

O Smart CDN da Transloadit é uma camada de transformação de imagens com esse armazenamento em cache integrado. Uma URL tlcdn.com identifica o Workspace, o Template, o caminho do arquivo de origem e os parâmetros de transformação. Na ausência de resultado no cache, a Assembly do Template é executada e o resultado é armazenado em cache; em um acerto de cache, o nó de borda responde sem executá-la novamente. Cada seleção de parâmetros corresponde a uma URL diferente e, portanto, a uma versão derivada armazenada separadamente em cache, e o Robot /file/serve define por quanto tempo os navegadores e a CDN mantêm um resultado.

O Smart CDN é documentado como uma camada de transformação e entrega, não como armazenamento: mantenha os originais no seu próprio armazenamento. As páginas vinculadas não descrevem uma operação de expurgo nem o que acontece com um resultado em cache quando um original é substituído sem alterar o caminho; teste esse caso no seu próprio Workspace antes de depender desse comportamento.

Explore os recursos de entrega da Transloadit

Fontes

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente