1
resposta

O benefício prático de CommonsChunkBundle

Não conseguiu entender muito bem como isso pode ser muito melhor que ter um único bundle.

Com um único bundle é feito apenas 1 GET request e, portanto, apenas 1 operação de I/O, tanto no cliente quanto no servidor. No fim das contas o tamanho total de dados que trafegam é o mesmo, pois você está fazendo o request dos mesmos dados, porém de maneira separada.

O código principal, que ficou menor, pode até ser carregado mais rápido, porém boa parte do código principal precisa dos módulos para funcionar, então no fim das contas não vejo a real vantagem.

Tem algum benchmark para a gente poder comparar? Obrigado.

1 resposta

Se você tem tudo junto, modificou seu projeto (o código que você escreve) um novo bundle será gerado e terá que ser carregado novamente pelo navegador, pois ele não pode mais usar o que estava no cache.

Quando você separa, se mudou apenas o código que escreveu, o vendor não será modificado. Sendo assim, o navegador carregará apenas o bundle com sua lógica e não precisará carregar o bundle vendor que muda com menos frequência. Verdadeiro ganho para uma aplicação grande.

Além disso, se o bundle tem mais de 500k é um tiro no pé deixá-lo com esse tamanho. Pois em redes mais lentas e smartphones não tão potentes há um tempo de baixar e parsear os scripts. E a soma do tempo de baixar e passear pode empactar a UX do usuário que espera e nas pesquisas do Goggle.

Páginas que carregam rapidamente ganham ponto de rankeamento e com esse ponto podem aparecer no resultado de pesquisa na frente de página mais lentas.

Para completar, o loader do webpack baixa o bubdle em comum em pararelo, mas só executa seu código depois de tudo chegar.

Aprendemos que concatenar script é bom, mas quando o arquivo é grande demais isso causa problemas. O engenheiro front-end deve estar sempre de olho nesses pontos.

Mas isso não é suficiente, pois se o seu bundle com apenas seu código for grande demais, daí você precisará quebrá-lo em partes o que caracteriza a técnica chamada code spliting e lazy loading, pois ele só será carregado sonente quando o usuário precisar dele (Você aprenderá a fazer isso no curso).

Sugiro que você assista o curso:

https://www.alura.com.br/curso-online-otimizacao-performance-web

Lá você vê métricas e várias técnicas de otimização web.

Lembrando que Webpack é voltado para construção de SPA. Não tem a mesma finalidade de Gulp ou Grunt.