Como paralelizar downloads entre nomes de host

click fraud protection

Algumas ferramentas de teste de velocidade de largura de banda podem recomendar sites paralelizar downloads em nomes de host para servir conteúdo da web para navegadores da web de forma eficaz. Essa recomendação geralmente ocorre em sites que usam o protocolo HTTP / 1.1 e ocorre quando os navegadores da web limitam o número de conexões simultâneas feitas a um domínio.

Sites que têm muitos HTTP solicitações de conteúdo estático (como imagens, CSS arquivos e JavaScript) encontram um aviso Paralelizar downloads entre nomes de host. Para contornar essa limitação, configure o sharding de domínio ou use uma rede de distribuição de conteúdo (CDN).

O protocolo HTTP / 2 tornou-se o padrão principal, tornando obsoleta a necessidade de downloads paralelizados. A maioria dos hosts da Web agora usa HTTP / 2 por padrão e disponibiliza um CDN gratuito de algum tipo. Como HTTP / 2 é a preferência do Google agora, considere atualizar seu site e hospedar em HTTPS.

Por que paralelizar downloads entre nomes de host?

instagram viewer

Os navegadores da Web só podem abrir um número limitado de conexões simultâneas por nome de host para sites que usam o protocolo HTTP / 1.1. Esse limite pode chegar a seis conexões.

Quando mais recursos precisam ser baixados, os recursos adicionais devem esperar em uma fila de backlog até que haja uma conexão disponível. Os recursos na fila são bloqueados e a redução desse tempo de bloqueio resulta em tempos de carregamento de página mais rápidos.

Por exemplo, se uma página da web tiver 12 imagens e o número de conexões permitidas pelo navegador da web for seis, seis imagens deverão aguardar no backlog. As imagens no backlog permanecem lá até que o download das primeiras seis imagens seja concluído.

Se uma imagem como um ícone ou logotipo for usada várias vezes, use um CSS Sprite para essas imagens repetidas para reduzir as solicitações de recursos.

O que é o aviso de paralelizar downloads entre nomes de host?

O aviso de paralelizar downloads entre nomes de host é uma regra usada em alguns verificadores de desempenho de sites. O aviso indica que aquele navegador não conseguiu abrir o número de conexões necessárias para baixar todos os recursos do site simultaneamente.

Para sites que usam o protocolo HTTP / 1.1, a maneira de contornar essa necessidade de conexões mais abertas é minimizar solicitações HTTP, configure um CDN ou implemente a fragmentação de domínio.

Para sites que usam o protocolo HTTP / 2, vários recursos podem ser carregados em paralelo em uma única conexão; isso é chamado de multiplexação. A multiplexação torna a fragmentação de domínio desnecessária com HTTP / 2. Cerca de 77 por cento dos navegadores da web suportam HTTP / 2 e não devem encontrar nenhum problema com a paralelização de downloads.

Se o seu provedor de hospedagem na web oferece suporte a HTTP / 2, é seguro ignorar o aviso de paralelizar downloads entre nomes de host. Com HTTP / 2, vários recursos podem ser baixados em paralelo em uma conexão.

O que é fragmentação de domínio?

Fragmentação de domínio é um método de otimização de desempenho para conexões HTTP / 1.1 e é usado em sites com um grande volume de solicitações HTTP. Na fragmentação de domínio, os ativos de conteúdo da web são distribuídos entre vários subdomínios. Quando os ativos são distribuídos dessa forma, o número de solicitações simultâneas que podem ser processadas aumenta.

Na fragmentação de domínio, o conteúdo é carregado em subdomínios sem cookies. Os usuários não interagem com conteúdo estático, como imagens, JavaScript e arquivos CSS, portanto, esse conteúdo não precisa ser anexado a cookies.

Quando os subdomínios não servem cookies, o tamanho das solicitações feitas para uma página e a latência da solicitação diminuem e as páginas da web carregam mais rápido. Exemplos de conteúdo que se beneficia da fragmentação de domínio incluem páginas com conteúdo que raramente é armazenado em cache, como uma página de miniaturas ou um arquivo de imagem.

No Drupal, os módulos adicionam arquivos CSS e JavaScript que podem reduzir o desempenho. Vamos para Configuração do Site > Desempenho e otimizar CSS e JavaScript.

Para aproveitar os benefícios da fragmentação de domínio em conexões HTTP / 1.1, siga estas dicas:

  • Sirva recursos dos mesmos subdomínios para armazenar arquivos em cache de maneira eficiente.
  • Distribua recursos uniformemente entre os subdomínios.
  • Compre certificados SSL para os subdomínios.

Em conexões HTTP / 2, a fragmentação de domínio reduz o desempenho porque há pesquisas DNS adicionais. Essas pesquisas de DNS aumentam o tempo de resolução e não armazenam arquivos em cache. A fragmentação de domínio também adiciona tempo a cada nova conexão. Estas são outras desvantagens da fragmentação de domínio em conexões HTTP / 2:

  • A distribuição de recursos carregados de CSS é difícil de distribuir entre hosts fragmentados.
  • Carga mais alta no servidor devido ao aumento do número de conexões simultâneas.
  • Mover conteúdo estático para um subdomínio pode quebrar o código.
  • O navegador da web pode não permitir o acesso a um nome de host diferente.
  • Os roteadores podem não ser capazes de classificar um grande número de solicitações fragmentadas ou podem ver as solicitações como um ataque de negação de serviço.

Como paralelizar downloads entre nomes de host

Ao receber o aviso de paralelizar downloads entre nomes de host, você precisará aumentar a paralelização de download distribuindo solicitações entre vários nomes de host. Para distribuir solicitações, crie subdomínios para os diferentes tipos de ativos da web usados ​​no site e especifique o domínio raiz como o único que usa cookies. Subdomínios não usam cookies.

Esses subdomínios adicionam novas fontes de conexões que o navegador pode fazer e possibilitam o download de mais recursos de uma só vez. Quando os recursos são divididos entre subdomínios, o navegador da web passa menos tempo bloqueando o conteúdo da web e as páginas da web carregam mais rápido.

Para sites que usam HTTP / 2 e HTTP / 1.1, a maneira mais fácil de paralelizar downloads entre nomes de host é usar vários subdomínios por meio de um CDN. Para sites que usam HTTP / 1.1 e WordPress, configure subdomínios e edite o arquivo functions.php do WordPress.

Subdomínios de configuração

Para distribuir recursos entre subdomínios, crie pelo menos um e até quatro subdomínios; um ou dois subdomínios é recomendado. A forma mais comum de criar subdomínios é usar o cPanel, que é oferecido pela maioria dos serviços de hospedagem na web.

Exemplos de subdomínios são:

  • media1.mydomain.com
  • media2.mydomain.com
  • media3.mydomain.com
  • media4.mydomain.com

Além disso, subdomínios e nomes de host devem ter a mesma estrutura e caminho. Por exemplo, se o caminho da imagem no host for www.mydomain.com/wp-content/uploads/, o caminho da imagem nos subdomínios deve corresponder, por exemplo, media1.mydomain.com/wp-content/uploads/.

Configure um CDN para paralelizar downloads

Depois que o CDN for configurado e os subdomínios criados, aponte cada subdomínio para a pasta que contém o conteúdo estático. Dessa forma, o conteúdo é carregado no subdomínio em vez do domínio principal.

Para apontar um subdomínio, use um DNS Zone Editor no cPanel para criar um novo registro CNAME para cada subdomínio. No campo Nome do registro, insira o subdomínio, por exemplo, media.mydomain.com. No campo CNAME, insira o domínio principal, por exemplo, www.mydomain.com.

Depois que os registros CNAME forem criados e propagados por seu host da web, adicione os registros CNAME às configurações da zona CDN.

Edite o arquivo de configuração do site no WordPress para paralelizar os downloads

Depois de configurar os subdomínios, adicione este código ao arquivo functions.php do tema WordPress usado para seu site. Substitua media1.mydomain.com e media2.mydomain.com pelos seus subdomínios reais.

function parallelize_hostnames ($ url, $ id) {
$ hostname = par_get_hostname ($ url); // chama a função suplementar
$ url = str_replace (parse_url (get_bloginfo ('url'), PHP_URL_HOST), $ hostname, $ url);
return $ url;
}
function par_get_hostname ($ name) {
$ subdomains = array ('media1.mydomain.com', 'media2.mydomain.com'); // adicione seus subdomínios aqui, quantos quiser.
$ host = abs (crc32 (basename ($ name))% count ($ subdomains));
$ hostname = $ subdomains [$ host];
return $ hostname;
}
add_filter ('wp_get_attachment_url', 'paralelize_hostnames', 10, 2);

Se você usa o Jetpack com WordPress, habilite o serviço Site Accelerator para colocar suas imagens em um CDN gerenciado pelo WordPress.

instagram story viewer