Desempenho da CDN

Uma das principais vantagens de uma CDN é sua capacidade de distribuir conteúdo com rapidez e eficiência. As otimizações de desempenho de uma CDN podem ser divididas em três categorias. Explore o Guia de CDNs.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Entender de que formas a CDN reduz os tempos de carregamento
  • Comparar o uso e o não uso de uma CDN
  • Explorar as noções básicas do armazenamento em cache da CDN
  • Aprender como uma CDN reduz o tamanho dos arquivos

Conteúdo relacionado


Quer saber mais?

Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.

Consulte a política de privacidade da Cloudflare para saber como coletamos e processamos seus dados pessoais.

Copiar o link do artigo

Como uma CDN reduz os tempos de carregamento?

Praticamente todo mundo na internet já experimentou as vantagens de uma rede de distribuição de conteúdo (CDN). A maioria das empresas de tecnologia, incluindo o Google, a Apple e a Microsoft, usam CDNs para reduzir a latência do carregamento de conteúdo de páginas web.

De modo geral, uma CDN posiciona servidores nos pontos de troca de tráfego entre redes diferentes. Esses pontos de troca de tráfego na internet (IXPs) são os principais locais onde provedores de internet diferentes se conectam entre si para fornecer um acesso mútuo aos recursos de suas diferentes redes. Além dos IXPs, uma CDN posiciona servidores em data centers localizados ao redor do mundo em áreas de tráfego intenso e localizações estratégicas, para poder movimentar o tráfego com a maior rapidez possível.

Uma das principais vantagens de uma CDN é sua capacidade de distribuir conteúdo com rapidez e eficiência. As otimizações de desempenho de uma CDN podem ser divididas em três categorias:

  1. Redução da distância: reduz a distância física entre um cliente e os dados solicitados
  2. Otimizações de hardware/software: aprimoram o desempenho da infraestrutura do lado do servidor, por exemplo, usando discos rígidos de estado sólido e um balanceamento de carga eficiente
  3. Redução da transferência de dados: emprega técnicas para reduzir o tamanho dos arquivos de modo que as páginas iniciais carreguem rapidamente

Para entender as vantagens de usar uma CDN, vamos explorar como ocorre uma transferência normal de dados entre o cliente e o servidor sem uma CDN implementada.

Qual é a diferença entre os tempos de carregamento com e sem uma CDN?

Vamos imaginar que alguém em Nova York precisa acessar um site hospedado em um servidor em Singapura. A distância física entre esses dois locais é substancial, da ordem de 15.300 km.

Distância sem CDN

Se o servidor que hospeda o conteúdo de um site (o servidor de origem) estiver localizado em Singapura, cada solicitação para cada ativo da página web precisará viajar de Nova York a Singapura e voltar a Nova York. É como pegar um voo internacional com diversas conexões pelo caminho: cada solicitação precisa viajar por meio de uma série de roteadores ao longo da distância física entre o ponto A e o ponto B.

Se quiser ver um exemplo real de quantas conexões (saltos) diferentes são necessárias para um computador chegar a um determinado serviço de web partindo do seu local atual, explore a ferramenta traceroute usando um computador desktop.

Redução de tempo no trânsito de uma CDN

Como a solicitação de Nova York a Singapura precisa passar por cada um dos roteadores localizados ao longo do caminho, a quantidade de tempo (latência) aumenta tanto de acordo com a distância total quanto com o tempo necessário para cada roteador processar a solicitação. Após processar a solicitação e responder ao cliente que a efetuou, o servidor de origem envia as informações de volta por meio de uma sequência semelhante de roteadores antes que elas retornem a Nova York. O tempo total dessa viagem é conhecido em telecomunicações como RTT, ou “tempo de ida e volta”. Por enquanto vamos ignorar a largura de banda disponível e o possível congestionamento da rede e vamos examinar um exemplo de causa de latência.

Para fins de ilustração, digamos o seguinte:

  • Uma solicitação leva 250 ms para ir de Nova York a Singapura.
  • O estabelecimento de uma conexão TCP/IP irá acrescentar 3 instâncias de 250 ms de latência.
  • Uma página web requer 5 ativos únicos, consistindo de imagens, arquivos JavaScript e a página web propriamente dita.

Vamos ver aproximadamente quanto tempo essa página web levará para carregar:

  • 750 ms: uma conexão TCP/IP é feita entre o cliente em Nova York e o servidor de origem em Singapura.
  • 250 ms: uma solicitação HTTP da página web viaja de Nova York a Singapura.
  • 250 ms: o autor da solicitação em Nova York recebe uma resposta do servidor de origem em Singapura com um código de status 200 e a página web, incluindo todos os ativos adicionais necessários.
  • 250 ms: cada um dos cinco ativos é solicitado pelo cliente em Nova York.
  • 1.500 ms: os cinco ativos são entregues ao cliente de forma assíncrona pelo servidor de origem em Singapura.

Nesse exemplo simples, o tempo total de trânsito para essa página carregar é de cerca de 3.000 ms.

Como você pode ver, cada vez que uma solicitação é realizada e uma resposta é enviada, todo o caminho entre o cliente em Nova York e o servidor de origem em Singapura precisa ser percorrido. À medida que os sites se tornam maiores e exigem um número maior de ativos, a latência entre o ponto A e o ponto B continua a aumentar.

Vamos revisitar o exemplo de um conteúdo hospedado em Singapura distribuído para um cliente da web em Nova York, mas desta vez o site em Singapura está usando uma CDN que tem um servidor em Atlanta contendo uma cópia em cache do site estático:

  • Uma solicitação leva 50 ms para ir de Nova York a Atlanta.
  • O estabelecimento de uma conexão TCP/IP irá acrescentar 3 instâncias de 50 ms de latência.
  • Uma página web requer 5 ativos únicos, consistindo de imagens, arquivos JavaScript e a página web propriamente dita.

Vamos ver aproximadamente quanto tempo essa página web levará para carregar usando a CDN:

  • 150 ms: uma conexão TCP/IP é feita entre o cliente em Nova York e o servidor de borda em Atlanta.
  • 50 ms: uma solicitação HTTP GET da página web viaja do cliente ao servidor de borda.
  • 50 ms: o cliente recebe uma resposta do cache do servidor de borda com a página web, incluindo uma lista de todos os ativos adicionais que continuam sendo necessários.
  • 50 ms: cada um dos cinco ativos é solicitado pelo cliente.
  • 800 ms: os cinco ativos são entregues ao cliente de forma assíncrona pelo servidor de borda.

O tempo total de trânsito para essa página carregar é de cerca de 1.100 ms.

Distância otimizada pela CDN

Nesse exemplo, a redução da distância entre o cliente e o conteúdo cria uma redução de 1.900 ms na latência para o conteúdo estático, representando uma redução de quase 2 segundos no tempo de carregamento.

Redução da latência com a CDN

Devido à redução da distância total que todo o tráfego necessário precisa atravessar, cada usuário do site estará economizando uma quantidade de tempo de carregamento. Considerando-se que os usuários começam a sair do site (rejeição) muito rapidamente à medida que os tempos de espera aumentam, essa redução resulta tanto em uma melhor experiência do usuário quanto em um maior tempo gasto pelo usuário na página.

Como uma CDN carrega conteúdo? O que é armazenamento em cache?

Como mencionamos anteriormente, quando um cliente solicita um arquivo ao servidor de origem a solicitação de modo geral precisa fazer uma viagem de ida e volta para esse servidor. Uma CDN reduz a latência ao extrair os arquivos de conteúdo estático do servidor de origem para a rede distribuída da CDN em um processo chamado armazenamento em cache. Algumas CDNs têm recursos avançados que permitem também um armazenamento em cache seletivo do conteúdo dinâmico. Após os dados terem sido armazenados em cache, a CDN distribui o conteúdo para o cliente a partir do data center CDN mais próximo.

Solicitação sem armazenamento em cache da CDN
Solicitação com armazenamento em cache da CDN

Após o handshake TCP ter sido efetuado, a máquina cliente envia uma solicitação HTTP à rede da CDN. Se o conteúdo ainda não tiver sido armazenado em cache, a CDN primeiro baixará o conteúdo do servidor de origem fazendo uma solicitação extra entre o servidor de origem e o servidor de borda da CDN.

Um armazenamento em cache típico de CDN ocorre em quatro etapas:

  1. Quando o usuário solicita uma página web, sua solicitação é roteada para o servidor de borda mais próximo da CDN.
  2. Em seguida, o servidor de borda faz uma solicitação do conteúdo solicitado pelo usuário ao servidor de origem.
  3. O servidor de origem responde à solicitação do servidor de borda.
  4. Para terminar, o servidor de borda responde ao cliente.
Solicitação de armazenamento em cache da CDN

A importância da proximidade entre uma CDN e o cliente se manifesta após a solicitação inicial para o servidor de origem já ter sido feita. Após os dados do servidor de origem terem sido armazenados no cache da rede da CDN, as solicitações subsequentes do cliente só precisarão ir até o servidor de borda mais próximo. Isso significa que, se o servidor de borda mais próximo estiver mais próximo do que o servidor de origem, a latência poderá ser reduzida e o conteúdo poderá ser distribuído muito mais rápido.

resposta da CDN com o conteúdo armazenado em cache na borda

É importante ressaltar que o tempo necessário para baixar ativos e processar solicitações e respostas não está sendo incluído no momento; até agora, calculamos apenas o tempo de trânsito necessário para transferir informações entre esses dois locais. Outras causas de latência importantes que iremos explorar incluem a redução de dados, a velocidade do disco rígido e o congestionamento de rede.

Como uma CDN reduz o tamanho dos arquivos para aumentar as velocidades?

Para reduzir os tempos de carregamento da página, as CDNs diminuem as quantidades totais de dados transferidos entre os servidores de cache da CDN e o cliente. Tanto a latência quanto a largura de banda necessária são reduzidas quando a quantidade total de dados transferidos diminui. O resultado é que a página carrega mais rápido e os custos de largura de banda são reduzidos. Essa redução envolve dois componentes essenciais:

Minificação: minificação é o processo pelo qual o tamanho dos blocos de código é reduzido por meio da remoção de todos os componentes que ajudam os humanos a entenderem o que está acontecendo. Embora um engenheiro precise separar as ideias com nomes de variáveis, espaços e comentários sensatos que tornem os blocos de código legíveis e passíveis de manutenção, os computadores podem executar esse código com sucesso após esses caracteres terem sido removidos.

Veja abaixo o mesmo bloco de código antes e depois da minificação:

Antes da minificação: oito linhas de código

CDN sem minificação

Após a minificação: reduzido a uma única linha de código

Minificação da CDN

Agora que o trecho de código foi reduzido de oito para uma única linha, o tamanho total do arquivo também foi reduzido. Isso significa menos tempo para transferir o arquivo, o que reduz a latência e ajuda a carregar o conteúdo mais rapidamente.

Compactação de arquivos: a compactação de arquivos é um componente essencial para a redução da latência e do consumo de largura de banda necessário para transferir dados pela internet. O GZip é um método de compactação comum que é considerado uma boa prática quando se trata de transferir páginas web. Muitos provedores de CDN têm o GZip habilitado por padrão. Qual é a ordem de grandeza de economia em uma compactação do GZip? De modo geral, a redução dos arquivos compactados é de cerca de 50% a 70% do tamanho inicial do arquivo.

Qual hardware uma CDN pode usar para aumentar as velocidades?

No que diz respeito às otimizações de hardware da CDN, o uso de discos rígidos de estado sólido (SSD) em vez de unidades de disco rígido tradicionais (HDD) proporciona uma vantagem substancial: as unidades de estado sólido podem abrir arquivos até 30% mais rápido do que a unidade de disco rígido tradicional e são mais resilientes e mais confiáveis.

Como ocorre com um toca-discos, uma unidade de disco rígido tradicional consiste em um disco de metal circular giratório com um revestimento magnético que armazena dados. A cabeça de leitura/gravação em um dos braços acessa a informação quando o disco gira embaixo dela. O processo é mecânico e afetado pela rapidez com que o disco gira. Com o advento das unidades de estado sólido, o uso do modelo mais antigo de discos rígidos passou a ser menos comum, embora ainda sejam produzidos atualmente e estejam em ampla circulação em vários sistemas de computador.

Uma unidade de estado sólido (SSD) também é uma forma de armazenamento duradoura, mas tem muito mais semelhança com um pen drive USB ou com os cartões de memória que costumam ser encontrados em dispositivos como câmeras digitais, já que não existem partes móveis. Se um disco rígido normal estiver girando e o sistema sofrer um empurrão, o disco rígido poderá pular, resultando em erros de leitura/gravação e em um possível tempo de inatividade. Outra vantagem importante do SSD é o acesso a arquivos fragmentados. Fragmentação de arquivos é uma situação em que partes de um arquivo estão em locais diferentes do disco, resultando em um acesso mais lento no caso das unidades de disco rígido. Como um SSD consegue acessar locais de memória que não são contíguos de forma eficiente, a fragmentação não constitui uma ameaça ao desempenho.

Nas primeiros CDNs, os dados eram armazenados em discos rígidos. Agora, todo o armazenamento em cache de alguns serviços de CDN do lado da borda pode ocorrer em unidades de estado sólido. A desvantagem dos SSDs é seu preço: um SSD pode custar até 5 vezes mais do que a mídia tradicional. Por essa razão alguns serviços de CDN com frequência evitam o uso de SSDs e optam pela tecnologia mais antiga. A CDN da Cloudflare utiliza exclusivamente SSDs.