1
resposta

[Dúvida] Como enviar de maneira performática várias imagens em uma requisição de Web API Asp.Net Core 3.1?

Estou precisando enviar várias imagens que estão na minha base de dados SQL Server no tipo 'varbinary' via Web API Asp.Net Core 3.1 para uma aplicação React e exibir as imagens num card na página do meu front-end. Quando envio as informações do banco de dados para api o tipo varbinary é transformado em bytes e consigo enviar esses bytes no formato base64 em um JSON, porém a requisição demora muito tempo devido ao tamanho das strings Base64.

Existe outra maneira mais performática/rápida de enviar essas imagens?

1 resposta

Olá, Lucas

Entendo sua preocupação com a performance ao enviar várias imagens via Web API. Você está correto, a conversão de imagens para Base64 pode resultar em strings muito grandes, o que pode tornar a transmissão lenta.

Uma alternativa mais performática seria servir essas imagens como arquivos estáticos. Em vez de armazenar as imagens no banco de dados, você poderia armazená-las em um sistema de arquivos e apenas referenciar o caminho para a imagem no banco de dados. Quando a API precisar enviar a imagem, ela pode simplesmente fornecer a URL da imagem. Dessa forma, o cliente (neste caso, sua aplicação React) pode baixar a imagem diretamente do servidor.

Aqui está um exemplo de como você pode fazer isso:

  1. Salve a imagem em um sistema de arquivos e armazene a URL da imagem no banco de dados.
  2. Quando a API precisar enviar a imagem, ela retorna a URL da imagem em vez da imagem em si.
  3. A aplicação React recebe a URL e usa algo como <img src={urlDaImagem} /> para exibir a imagem.

Essa abordagem tem a vantagem de ser mais eficiente em termos de largura de banda, pois as imagens são servidas diretamente do servidor, e não precisam ser codificadas e decodificadas.

Espero que isso possa te ajudar a melhorar a performance da sua aplicação. Lembre-se, no entanto, que cada caso tem suas particularidades e essa solução pode não ser perfeita para todas as situações.

Espero ter ajudado e bons estudos!