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

Nossos aplicativos da Web continuam crescendo em escopo, ambição e funcionalidade, o que é ótimo. No entanto, a marcha implacável em direção a uma Web mais rica está impulsionando outra tendência: a quantidade de dados baixados por cada aplicativo continua aumentando 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 a essa pergunta. O projeto rastreia como a Web é criada, rastreando periodicamente os sites mais acessados (mais de 300.000 da lista Alexa Top 1M) 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 do HTTP Archive

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
Outro 282 KB 308 KB 353 KB
Total 1054 KB 1985 KB 3.486 KB

Os dados acima mostram a tendência de crescimento no número de bytes baixados para destinos populares na Web entre janeiro de 2013 e janeiro de 2014. É claro que nem todos os sites crescem no mesmo ritmo ou exigem a mesma quantidade de dados. Por isso, destacamos os diferentes quantis na distribuição: 50º (mediana), 75º e 90º.

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

Ao contrário dos aplicativos para computador, os aplicativos da Web não exigem um processo de instalação separado: basta inserir o URL para que eles comecem a funcionar. Esse é um recurso fundamental da Web. No entanto, para que isso aconteça, muitas vezes precisamos buscar dezenas e, às vezes, centenas de recursos variados, que podem somar megabytes de dados e precisam ser reunidos em centenas de milissegundos para facilitar a experiência instantânea na Web que buscamos.

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