profile picture

Você deveria considerar um CDN para seus projetos, veja como funciona

29 novembro de 2023

javascript frontend cdn infra web performance

Atualmente, a internet é dominada por pessoas impacientes, o que está longe de ser uma ofensa, pois eu também me incluo nesse grupo. Segundo um estudo realizado pela Imperva, uma empresa de cibersegurança focada na proteção de aplicações web, podemos extrair algumas conclusões interessantes sobre o comportamento dos usuários online:

Esses tipos de métricas podem ser obtidos para o seu site com diversas ferramentas online, e a que eu mais uso é o PageSpeed Insights do Google, que oferece um relatório completo sobre determinada página em um site público na internet.

Por exemplo, ao analisar o meu artigo mais lido deste blog, JavaScript: Qual a diferença entre Escopo e Contexto?, obtive informações surpreendentes sobre o desempenho: apenas 1,9 segundos para o primeiro conteúdo ser exibido na tela de um celular. Isso é incrível e ainda há espaço para melhorias!

O Papel Crucial do CDN nas Métricas de Desempenho da Web

Entender como um CDN (Content Delivery Network) pode melhorar essas métricas é crucial. Um CDN distribui o conteúdo do seu site através de vários servidores ao redor do mundo, diminuindo o tempo de carregamento para usuários em diferentes locais.

Como um CDN Melhora a Experiência do Usuário

Voidr.co: Uma Solução de CDN de Imagem

A Voidr.co é a solução de CDN que recomendo. Ela oferece:

Tabela com os planos da Voidr.co, incluindo opções gratuitas e pagas

Incluir exemplos de código pode tornar seu artigo mais interativo e útil para os desenvolvedores. Abaixo estão alguns exemplos:

Exemplo de Integração do CDN Voidr.co em um Site HTML

Para usar a API da Voidr Images, que permite a otimização e transformação de imagens com facilidade, siga este exemplo:

  1. Incluir Imagens com Tags HTML:

    <img
      src="https://img.voir.co/:project_slug/:transformers/fetch/:url_da_imagem_original"
      alt="Descrição da imagem"
    />
    
  2. Otimização Dinâmica de Imagens:

    <img
      src="https://img.voir.co/:project_slug/resize:400x400/compress:90/convert:webp/fetch/:url_da_imagem_original"
      alt="Descrição da imagem"
    />
    

Exemplo com JavaScript

Aqui está um exemplo usando a biblioteca avoidr/images em Node.js:

import VoidrImages from 'avoidr/images';

const YOUR_API_KEY = 'YOUR_API_KEY';
const imageFilePath = '/var/www/product-banner-large.png';

async function optimizeImage() {
  try {
    const voidrImages = new VoidrImages(YOUR_API_KEY);
    const { url } = await voidrImages.upload(imageFilePath);
    const meta = await voidrImages
      .compress(90)
      .resize({ width: 400, height: 400 })
      .convert('webp')
      .toJSON();

    console.log('URL da imagem otimizada:', url);
    console.log('Metadados da imagem:', meta);

    return { url, meta };
  } catch (err) {
    console.error('Erro:', err);
  }
}

optimizeImage();

Exemplo com CSS

Para estilizar elementos com imagens otimizadas:

.background-image {
  background-image: url('https://img.voir.co/:project_slug/:transformers/fetch/:url_da_imagem_original');
  background-size: cover;
}

Conclusão

Obrigado por acompanhar até aqui! Espero que as dicas sobre CDN e otimização de imagens tenham sido úteis. Se gostou, compartilhe com a galera. Vamos continuar a conversa no meu Twitter @mechamobau. Valeu pelos peixes e até a próxima!