Digamos que eu tenha um arquivo JavaScript bastante robusto, compactado em aproximadamente 100kb ou mais. Por arquivo, quero dizer que é um arquivo externo que seria vinculado via <script src="...">
, não colado no próprio HTML.
Qual é o melhor lugar para colocar isso no HTML?
<html>
<head>
<!-- here? -->
<link rel="stylesheet" href="stylez.css" type="text/css" />
<!-- here? -->
</head>
<body>
<!-- here? -->
<p>All the page content ...</p>
<!-- or here? -->
</body>
</html>
Haverá alguma diferença funcional entre cada uma das opções?
javascript
html
optimization
nickf
fonte
fonte
Respostas:
O Yahoo! A equipe de desempenho excepcional recomenda colocar scripts na parte inferior da página devido à maneira como os navegadores fazem o download dos componentes.
É claro que o comentário de Levi "pouco antes de você precisar e logo" é realmente a resposta correta, ou seja, "depende".
fonte
$(function () {...})
Também colocamos códigos como este na parte inferior da página ou precisam estar dentro<head>
?</body>
?O melhor lugar para isso é um pouco antes de você precisar e o quanto antes.
Além disso, dependendo da localização física dos usuários, o uso de um serviço como o serviço S3 da Amazon pode ajudar os usuários a fazer o download de um servidor fisicamente mais próximo deles do que o seu servidor.
O script js é uma biblioteca comumente usada como jQuery ou protótipo? Nesse caso, existem várias empresas, como Google e Yahoo, que possuem ferramentas para fornecer esses arquivos para você em uma rede distribuída.
fonte
Como regra geral, o melhor lugar para colocar
<script>
tags é a parte inferior da página, logo antes da</body>
tag. Algo assim:Por quê?
CSS
Um pouco fora de tópico, mas ... Coloque as folhas de estilo no topo.
Leitura adicional
O Yahoo lançou um guia muito legal que lista as melhores práticas para acelerar um site. Definitivamente vale a pena ler: https://developer.yahoo.com/performance/rules.html
fonte
Com 100k de Javascript, você nunca deve colocá-lo dentro do arquivo. Use um arquivo Javascript de script externo. Não há nenhuma chance no inferno de você usar apenas essa quantidade de código em apenas uma página HTML. É provável que você esteja perguntando onde deve carregar o arquivo Javascript. Para isso, você já recebeu respostas satisfatórias.
Mas eu gostaria de ressaltar que comumente os navegadores modernos aceitam arquivos Javascript gzip ped! Apenas gzip o
x.js
arquivo parax.js.gz
e aponte para isso nosrc
atributo Ele não funciona no sistema de arquivos local, você precisa de um servidor web para que ele funcione. Mas a economia em bytes transferidos pode ser enorme.Testei com sucesso no Firefox 3, MSIE 7, Opera 9 e Google Chrome. Aparentemente, não funciona dessa maneira no Safari 3.
Para obter mais informações, consulte esta postagem do blog e outra página muito antiga que, no entanto, é útil, pois indica que o servidor da Web pode detectar se um navegador pode aceitar Javascript compactado ou não. Se o lado do servidor puder escolher dinamicamente enviar o gzip ou o texto sem formatação, você poderá tornar a página utilizável em todos os navegadores da web.
fonte
Colocar o javascript no topo pareceria mais limpo, mas funcionalmente, é melhor ir atrás do HTML. Dessa forma, seu javascript não será executado e tentará referenciar elementos HTML antes de serem carregados. Esse tipo de problema geralmente só se torna aparente quando você carrega a página em uma conexão de Internet real, especialmente lenta.
Você também pode tentar carregar dinamicamente o javascript adicionando um elemento de cabeçalho de outro código javascript, embora isso só faça sentido se você não estiver usando todo o código o tempo todo.
fonte
Usando cuzillion, você pode testar o efeito no carregamento da página de diferentes posicionamentos de tags de script usando métodos diferentes: inline, externo, "tags HTML", "document.write", "elemento JS DOM", "iframe" e "XHR eval" . Veja a ajuda para uma explicação das diferenças. Também pode testar folhas de estilo, imagens e iframes.
fonte
A resposta é depende de como você está usando os objetos de javascript. Como já foi apontado, o carregamento dos arquivos javascript no rodapé, em vez do cabeçalho, certamente melhora o desempenho, mas deve-se tomar cuidado para que os objetos usados sejam inicializados posteriormente ao carregamento no rodapé. Mais uma maneira é carregar os arquivos 'js' colocados na pasta que estará disponível para todos os arquivos.
fonte
Como outros já disseram, provavelmente deve ir em um arquivo externo. Eu prefiro incluir esses arquivos no final do <head />. Esse método é mais amigável ao ser humano do que à máquina, mas dessa forma eu sempre sei onde está o JS. Não é tão legível incluir arquivos de script em qualquer outro lugar (imho).
Se você realmente precisa espremer todos os últimos ms, provavelmente deve fazer o que o Yahoo diz.
fonte
Os scripts devem ser incluídos no final da tag do corpo, pois assim o HTML será analisado pelo navegador e exibido antes do carregamento dos scripts.
fonte
A resposta para a pergunta depende. Existem 2 cenários nessa situação e você precisará fazer uma escolha com base no cenário apropriado.
Cenário 1 - Script crítico / Script necessário
Caso o script que você está usando seja importante para carregar o site, é recomendável que seja colocado na parte superior do seu documento HTML, por exemplo
<head>
,. Alguns exemplos incluem - código do aplicativo, autoinicialização, fontes etc.Cenário 2 - Scripts menos importantes / analíticos
Também existem scripts usados que não afetam a exibição do site. É recomendável que esses scripts sejam carregados após o carregamento de todos os segmentos importantes. E a resposta será a parte inferior do documento, ou seja, a parte inferior do seu
<body>
antes da tag de fechamento. Alguns exemplos incluem - Google analytics, hotjar, etc.Bônus - assíncrono / adiado
Você também pode informar aos navegadores que o carregamento do script pode ser feito simultaneamente com outros e pode ser carregado com base na escolha do navegador, usando um argumento adiar / assíncrono no código do script.
por exemplo.
<script async src="script.js"></script>
fonte
Seus links javascript podem ficar na cabeça ou no final da tag body, é verdade que o desempenho melhora colocando o link no final da tag body, mas, a menos que o desempenho seja um problema, é melhor colocá-los na cabeça para que as pessoas leiam e você saiba onde os links estão localizados e pode referenciá-los mais facilmente.
fonte
Eu diria que depende de fato o que você planejou alcançar com o código Javascript:
fonte
document.write
, o que provavelmente não deveria ser.