Sobes.tech
Middle

Como é que uma página web é carregada?

sobes.tech IA

Resposta da IA

  1. O utilizador insere uma URL na barra de endereço do navegador ou clica num link.
  2. Análise da URL: O navegador analisa a URL para determinar o protocolo, domínio, porta e caminho.
  3. Procura do endereço IP: O navegador verifica o cache DNS, depois o cache do sistema operativo, depois o cache do roteador. Se o endereço não for encontrado localmente, envia uma requisição ao servidor DNS para obter o endereço IP do nome de domínio.
  4. Estabelecimento da conexão TCP (Handshake): O navegador estabelece uma conexão TCP com o servidor usando o endereço IP obtido (aperto de mão de três vias: SYN -> SYN-ACK -> ACK).
  5. Envio da requisição HTTP: O navegador envia uma requisição HTTP (normalmente GET) ao servidor indicando o recurso solicitado (caminho), os cabeçalhos (User-Agent, Accept-Encoding, Cookie, etc.) e o corpo da requisição (se houver).
    GET /index.html HTTP/1.1  
    Host: example.com  
    User-Agent: Mozilla/5.0 ...  
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
    
  6. Processamento da requisição pelo servidor: O servidor recebe a requisição, processa-a (por exemplo, executa scripts do lado do servidor) e gera uma resposta HTTP.
  7. Envio da resposta HTTP: O servidor envia a resposta HTTP de volta ao navegador. A resposta inclui o código de estado (por exemplo, 200 OK), os cabeçalhos (Content-Type, Content-Length, Cache-Control, etc.) e o corpo da resposta (conteúdo do recurso solicitado, por exemplo, ficheiro HTML).
    HTTP/1.1 200 OK  
    Content-Type: text/html; charset=UTF-8  
    Content-Length: 12345  
    Cache-Control: max-age=3600  
    
    <!DOCTYPE html>  
    <html>  
    <head>...</head>  
    <body>...</body>  
    </html>  
    
  8. Análise do HTML e construção do DOM: O navegador começa a receber o código HTML e a analisá-lo, criando um modelo de objeto do documento (DOM - Document Object Model) na memória. O DOM representa uma árvore de elementos HTML.
  9. Carregamento e processamento de recursos: Durante a análise do HTML, o navegador encontra links para outros recursos (CSS, JavaScript, imagens, fontes, etc.). Para cada recurso, os passos 3-7 são repetidos (procura de IP, conexão TCP (se necessário), requisição/resposta HTTP). O carregamento desses recursos pode ocorrer em paralelo (limitado pelo número de ligações simultâneas).
  10. Construção do CSSOM: O navegador analisa os ficheiros CSS e os blocos <style> em HTML, criando um modelo de objeto CSS (CSSOM - CSS Object Model). O CSSOM representa os estilos aplicáveis aos elementos na página.
  11. Construção da árvore de renderização: O navegador combina o DOM e o CSSOM para construir a árvore de renderização (Render Tree). A árvore de renderização contém apenas os elementos visíveis da página e os seus estilos. Os elementos com display: none não são incluídos.
  12. Layout (Reflow): O navegador calcula a posição e o tamanho exatos de cada elemento no layout, com base na árvore de renderização, nas dimensões da janela de visualização e nos estilos.
  13. Pintura (Repaint): O navegador desenha cada elemento na tela nas posições calculadas e com os estilos aplicados. Isto ocorre em camadas.
  14. Composição: O navegador combina as camadas desenhadas na imagem final que é exibida na tela do utilizador.
  15. Execução de JavaScript: À medida que os scripts são carregados e analisados, o código JavaScript é executado. A execução de JavaScript pode influenciar o DOM e o CSSOM, provocando passos repetidos de Layout e Pintura (Relayout/Repaint).

Etapas-chave para mostrar conteúdo:

  • DOMContentLoaded: O evento dispara quando o navegador carregou e analisou completamente o documento HTML e construiu a árvore DOM, mas aguarda o carregamento das folhas de estilo, imagens e subframes.
  • Load: O evento dispara quando toda a página, incluindo imagens, scripts, estilos e outros recursos, está completamente carregada.