O que é um servidor de cache de imagens?

Um servidor de cache de imagens armazena imagens de origem ou transformadas que já foram solicitadas, perto de quem as consome. Solicitações posteriores podem usar a resposta armazenada em vez de buscar o arquivo de origem ou repetir sua transformação.

Como funcionam os servidores de cache de imagens

Um servidor de cache de imagens associa a identidade de uma solicitação aos bytes da imagem e aos metadados de resposta armazenados, fornecendo o resultado sem repetir o trabalho nos serviços anteriores. Ele pode armazenar em cache os originais, as versões redimensionadas ou ambos, em um nó de borda regional ou dentro do serviço de transformação. Regras de atualização, validadores e invalidação explícita determinam quando o conteúdo armazenado é reutilizado. Essa camada fica entre as URLs das imagens e o armazenamento de origem, reduzindo a carga de transformação e encurtando os caminhos de entrega.

Informações essenciais

  1. Um serviço de transformação de imagens armazena seus próprios resultados em cache? Não necessariamente, então verifique antes de presumir que requisições repetidas têm baixo custo. O responsável pela manutenção do imgproxy afirmou que o servidor de código aberto não faz armazenamento em cache por decisão de projeto e deixa essa função para CDNs e servidores de cache; a documentação da edição Pro descreve um cache interno opcional e ainda aponta o uso de uma CDN à frente do imgproxy como a melhor prática. As transformações de imagem da Cloudflare armazenam cada resultado transformado em cache na borda da rede e também armazenam o original em cache para acelerar transformações posteriores da mesma imagem de origem.
  2. O que precisa estar na chave de cache? Tudo que altera os bytes: a imagem de origem, cada opção de processamento e o formato de saída, que são os elementos usados para compor a chave de cache interno do imgproxy. Quando o formato é escolhido com base no cabeçalho Accept da requisição em vez da URL, a URL deixa de identificar os bytes. Um cache HTTP só mantém as variantes separadas se a resposta indicar esse cabeçalho em Vary, ou se a CDN ou o proxy de cache estiver configurado para usá-lo na chave. Os recursos de CDN para isso têm condições: o Vary for Images da Cloudflare está disponível nos planos Pro, Business e Enterprise e funciona somente quando a origem envia Vary: Accept, a URL da imagem tem uma extensão de arquivo compatível em seu caminho e as variantes servidas pela origem estão configuradas; as chaves de cache personalizadas, que podem incluir Accept, são exclusivas do plano Enterprise. O imgproxy alerta que cabeçalhos não podem ser assinados, portanto quem faz a chamada pode contornar o cache da CDN alterando Accept.
  3. O que acontece quando uma imagem de origem é substituída na mesma URL? Os caches continuam servindo imagens derivadas da imagem antiga até que essas entradas expirem ou sejam invalidadas, e uma solicitação de limpeza só alcança os caches aos quais é enviada. Atribuir uma nova URL à imagem de origem alterada evita o problema, pois uma URL que nunca foi solicitada não tem uma resposta armazenada. Se o nome do arquivo precisar permanecer o mesmo, a URL da imagem derivada pode mudar: a opção cachebuster do imgproxy não afeta o processamento, e alterar seu valor contorna os caches da CDN, do servidor proxy e do navegador. Isso força uma nova transformação, mas não atualiza a imagem de origem: se o original também estiver em cache na URL inalterada, a nova imagem derivada poderá ser gerada a partir do arquivo antigo até que essa entrada expire, seja revalidada ou seja removida do cache. A Cloudflare, por exemplo, afirma que requisições de tamanhos diferentes provavelmente reutilizarão o original armazenado em cache. O cache interno do imgproxy não tem invalidação manual; sua chave inclui cachebuster, e sua documentação também indica a expiração de objetos no backend de armazenamento.
  4. O que acontece quando muitas requisições simultâneas não encontram a mesma imagem no cache? A menos que o cache consolide essas requisições, cada uma aciona sua própria transformação, o que é conhecido como uma avalanche de requisições ao cache. A consolidação tem condições. A Cloudflare consolida as requisições simultâneas sem resultado em cache por data center, portanto vários locais ainda podem enviar uma requisição cada. A opção proxy_cache_lock do NGINX fica desativada por padrão, e uma requisição cuja espera ultrapassa o tempo limite do bloqueio é encaminhada ao servidor a montante sem que sua resposta seja armazenada em cache. Na Fastly, se a resposta não puder ser armazenada em cache, as requisições na fila serão enviadas à origem uma após a outra.

Quando os servidores de cache de imagens são importantes

Armazene em cache variantes de imagens com alto custo de processamento usando chaves que incluam todos os parâmetros de transformação e a versão relevante da imagem de origem. Uma chave incompleta pode fazer com que a imagem errada seja servida, enquanto um tempo de retenção curto demais aumenta a carga na origem e o custo de processamento.

Como a Transloadit ajuda com servidores de cache de imagens

No Smart CDN da Transloadit, o cache de imagens é o Robot /tlcdn/deliver, usado implicitamente para URLs tlcdn.com: ele armazena cada resultado transformado em cache e o entrega perto dos seus usuários. O Robot /file/serve, que repassa o resultado de um Template à CDN, só é executado quando a CDN não tem uma cópia em cache, e seu parâmetro cache_duration define por quanto tempo navegadores e CDNs podem manter o resultado. A documentação de /file/serve desaconselha seu uso sem uma CDN à frente, pois cada requisição seria um novo redimensionamento.

Para URLs assinadas do Smart CDN, o tempo de validade efetivo de uma resposta em cache é limitado pelo tempo de validade restante da assinatura. As páginas vinculadas aqui não descrevem uma operação de limpeza de cache nem o que acontece com um resultado em cache quando o original é substituído em um caminho de arquivo inalterado, então 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