Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Quando você acessa um desses grandes portais da Internet e vê a página carregar em segundos logo acredita que isso tudo acontece porque eles tem um link com uma banda gigantesca, servidores super-poderosos, e diversos tipos de dispositivos de hardware para fazer cache, otimização e etc.
Provalvelmente tudo isso é verdade, mas mesmo assim, há algumas técnicas que são utilizadas para otimizar o tempo de carregamento das páginas de um site que estão disponíveis à sua mão.
Com isso em mente, resolvi criar alguns posts falando de algumas técnicas que você pode adotar para melhorar o desempenho do seu site. Dentre os assuntos que vou abordar merecem destaque:
- paralelização de requests
- utilização de compressão
- redução de espaços em branco das páginas
- evitar a serialização de download do javascript
- otimização de tamanho das imagens
- cache do lado do servidor
- cache do lado do cliente
Neste post vou falar de um tópico bem simples, mas que a grande maioria dos administradores e desenvolvedores Web desconhece: Paralelização de Requests
Se você ainda usa ou lembra-se, o Internet Explorer 6.0 só “conseguia” fazer dois downloads simultâneos de uma só vez. Provavelmente você se questionou (ou reclamou veemente) sobre o porquê desta limitação absurda. Pois bem, eis aí uma novidade das velhas: O RFC2616, que define o protocolo HTTP 1.1, na seção 8.1.4 diz o seguinte:
Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.
Ou seja, o Internet Explorer 7 (e anteriores) simplesmente obedece o que está escrito na definição do protocolo HTTP 1.1. Porém, o mundo às vezes é dos espertos, e outros navegadores passaram a ignorar esta recomendação (Por exemplo, o Firefox abre 10 conexões simultâneas) e por isso usam melhor a banda, parecendo ser mais rápidos. (Veja https://blogs.msdn.com/b/ie/archive/2005/04/11/407189.aspx para mais detalhes sobre isso).
Com o IE8 este limite foi aumentado para 6 conexões simultâneas, mas mesmo assim ainda é um limitador. Muito bem, uma vez que isso é uma realidade, como podemos “paralelizar” o maior número de requests possíveis? Ora, com uma solução bem simples, adotada por todos os grandes portais: a divisão do site em “sub-domínios”.
Por exemplo, imagine que hoje o seu site tenha a seguinte estrutura de URLs:
- https://www.meusite.com.br
- https://www.meusite.com.br/static
- https://www.meusite.com.br/imagens
- etc…
Com essa configuração, cada cliente irá abrir de 2 até 10 (dependendo do navegador que ele use) conexões simultâneas para o seu site. Todavia, se você criar subdomínios, um para cada tipo de conteúdo, você conseguirá muito mais. Por exemplo:
- https://www.meusite.com.br/
- https://static.meusite.com.br
- https://imagens.meusite.com.br/
Com isso você conseguirá as mesmas 10 conexões simultâneas para cada domínio, mas como são três domínios diferentes, teremos 30 conexões simultâneas, o que torna a utilização da banda muito mais eficiente, e em consequência, diminui o tempo de carga das páginas.
Num próximo post vou falar sobre um recurso do IIS7.x que facilita a criação dessa nova estrutura sem ter que mudar o conteúdo do site. Fique ligado!
Um abraço e até a próxima.
Paulo