Otimização de eficiência de conteúdo

Nossos aplicativos da Web continuam a crescer em escopo, ambição e funcionalidade. Isso é bom. No entanto, a busca incessante por uma Web mais avançada gera outra tendência: a quantidade de dados baixados por aplicativo continua a aumentar em um ritmo constante. Para oferecer um ótimo desempenho, precisamos otimizar a entrega de cada byte.

Como é um aplicativo da Web moderno? O HTTP Archive pode nos ajudar a responder essa pergunta. O projeto acompanha como a Web é criada, rastreando periodicamente os sites mais populares (mais de 300.000 da lista de um milhão de sites mais importantes da Alexa) e registrando e agregando análises sobre o número de recursos, tipos de conteúdo e outros metadados para cada destino individual.

Tendências de arquivos HTTP

50º percentil 75º percentil 90º percentil
HTML 13 KB 26 KB 54 KB
Imagens 528 KB 1.213 KB 2.384 KB
JavaScript 207 KB 385 KB 587 KB
CSS 24 KB 53 KB 108 KB
Outros 282 KB 308 KB 353 KB
Total 1.054 KB 1.985 KB 3.486 KB

Os dados acima capturam a tendência de crescimento do número de bytes baixados para destinos populares na Web entre janeiro de 2013 e janeiro de 2014. É claro que nem todo site cresce na mesma taxa ou exige a mesma quantidade de dados. É por isso que destacamos os diferentes quantis na distribuição: 50o (mediana), 75o e 90o.

Um site médio no início de 2014 é composto por 75 solicitações que somam 1.054 KB do total de bytes transferidos, e o número total de bytes (e solicitações) cresceu em um ritmo constante ao longo do ano anterior. Isso por si só não deveria ser tão surpreendente, mas tem implicações importantes no desempenho: sim, as velocidades da Internet estão aumentando, mas em taxas diferentes em países diferentes, e muitos usuários ainda estão sujeitos a limites de dados e planos limitados caros, especialmente em dispositivos móveis.

Ao contrário de seus equivalentes no desktop, os aplicativos da web não exigem um processo de instalação separado: insira o URL e a página estará pronta. Esse é um recurso importante da Web. No entanto, para que isso aconteça, muitas vezes precisamos buscar dezenas e às vezes centenas de recursos variados, que podem chegar a megabytes de dados e precisam se reunir em centenas de milissegundos para facilitar a experiência instantânea na Web que queremos.

Atingir uma experiência instantânea na Web considerando esses requisitos não é pouca coisa, e é por isso que otimizar a eficiência do conteúdo é essencial: eliminar downloads desnecessários, otimizar a codificação de transferência de cada recurso por meio de várias técnicas de compactação e aproveitar o armazenamento em cache sempre que possível para eliminar downloads redundantes.