Javascript bloquear download de conteúdo em seu site durante página
-
20-08-2019 - |
Pergunta
Esta é a melhor forma de incluir o javascript no seu site? http://www.webdigi.co.uk/blog/2009/avoid-javascript-blocking-content-download-on-your-website-during-page-load/
Solução
A melhor maneira de incluir JavaScript do seu site é incluir como poucos arquivos possível no final da página *, afinal de contas da marcação e outros bens foram carregados. Fazê-lo desta forma também tem o benefício adicional de incentivar uma "melhoria progressiva " modelo de desenvolvimento.
* Yahoo passa activamente uma grande quantidade de dinheiro a investigar este e tem dedicado, em tempo integral pessoas (incluindo os brilhantes Steve Souders) que publicam suas descobertas on-line e em forma de livro .
Outras dicas
não parece ser um one-size-fits-all situação, então eu muitas vezes recorrem a este artigo famoso para me ajudar a responder a perguntas como essa:
Foi mencionado em um dos podcasts, mas se você hospedar o javascript em um domínio separado, ou mesmo um subdomínio, o navegador pode abrir mais conexões e descarregue ambos os js e o resto-of-the-page no mesmo tempo. É por isso que muitas pessoas optam por link para instância do jQuery do Google, em vez de seu próprio. Este exemplo também tem benefícios cachine, mas o princípio fundamental mantém-se.
Em poucas palavras o artigo está dizendo para anexar nós <script>
dinamicamente na DOM
a fim de alcançar transferências paralelas de arquivos de script. Isso funciona e não é nada novo.
No entanto, não menciona a maior desvantagem do método: Embora scripts serão transferidos em paralelo, a ordem em que eles são executado não é determinista. IE irá executá-los na ordem em que terminar o download em, enquanto Firefox executa-los na ordem em que estão ligados no DOM.
Este é um problema. Por exemplo, digamos roteiro A e roteiro B são adicionados usando essa técnica. Agora imagine roteiro A é jQuery, e roteiro B faz isso:
$(document).ready(function(){...})
No IE você está ferrado se por qualquer motivo (por exemplo, tráfego de rede, o cache miss) acabamentos roteiro B download antes roteiro A, porque ele vai ser executado antes jQuery foi carregado.
este artigo para uma melhor explicação.
O Rex M resposta é o caminho a percorrer.