Sobes.tech
Middle

Πώς φορτώνεται μια ιστοσελίδα;

sobes.tech AI

Απάντηση από AI

  1. Ο χρήστης εισάγει μια διεύθυνση URL στη γραμμή διευθύνσεων του προγράμματος περιήγησης ή κάνει κλικ σε έναν σύνδεσμο.
  2. Ανάλυση URL: Ο περιηγητής αναλύει το URL για να προσδιορίσει το πρωτόκολλο, τον τομέα, την πόρτα και τη διαδρομή.
  3. Αναζήτηση IP διεύθυνσης: Ο περιηγητής ελέγχει την κρυφή μνήμη DNS, στη συνέχεια την κρυφή μνήμη του λειτουργικού συστήματος, και στη συνέχεια την κρυφή μνήμη του δρομολογητή. Αν η διεύθυνση δεν βρεθεί τοπικά, αποστέλλεται αίτημα σε διακομιστή DNS για λήψη IP διεύθυνσης του ονόματος τομέα.
  4. Καθιέρωση TCP σύνδεσης (Handshake): Ο περιηγητής δημιουργεί TCP σύνδεση με τον διακομιστή με τη ληφθείσα IP διεύθυνση (τριμερής χειραψία: SYN -> SYN-ACK -> ACK).
  5. Αποστολή HTTP αιτήματος: Ο περιηγητής στέλνει HTTP αίτημα (συνήθως GET) στον διακομιστή με την αναφορά του απαιτούμενου πόρου (διαδρομή), των κεφαλίδων (User-Agent, Accept-Encoding, Cookie κ.ά.) και του σώματος του αιτήματος (αν υπάρχει).
    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. Επεξεργασία του αιτήματος από τον διακομιστή: Ο διακομιστής λαμβάνει το αίτημα, το επεξεργάζεται (π.χ., εκτελεί σκριπτ στην πλευρά του διακομιστή) και δημιουργεί την απάντηση HTTP.
  7. Αποστολή της απάντησης HTTP: Ο διακομιστής στέλνει την απάντηση HTTP πίσω στον περιηγητή. Η απάντηση περιλαμβάνει τον κωδικό κατάστασης (π.χ., 200 OK), τις κεφαλίδες (Content-Type, Content-Length, Cache-Control κ.ά.) και το σώμα της απάντησης (περιεχόμενο του ζητούμενου πόρου, π.χ., αρχείο 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. Ανάλυση HTML και κατασκευή DOM: Ο περιηγητής λαμβάνει τον κώδικα HTML και τον αναλύει, δημιουργώντας το αντικειμενικό μοντέλο του εγγράφου (DOM - Document Object Model) στη μνήμη. Το DOM αντιπροσωπεύει το δέντρο των στοιχείων HTML.
  9. Φόρτωση και επεξεργασία πόρων: Κατά την ανάλυση HTML, ο περιηγητής συναντά συνδέσμους σε άλλους πόρους (CSS, JavaScript, εικόνες, γραμματοσειρές κ.ά.). Για κάθε πόρο, εκτελούνται τα βήματα 3-7 (εύρεση IP, TCP σύνδεση, HTTP αίτημα/απάντηση). Η φόρτωση αυτών των πόρων μπορεί να γίνεται παράλληλα (περιορισμένο από τον αριθμό των ταυτόχρονων συνδέσεων).
  10. Κατασκευή CSSOM: Ο περιηγητής αναλύει αρχεία CSS και μπλοκ <style> στο HTML, δημιουργώντας το αντικειμενικό μοντέλο CSS (CSSOM - CSS Object Model). Το CSSOM αντιπροσωπεύει τα στυλ που εφαρμόζονται στα στοιχεία της σελίδας.
  11. Κατασκευή Render Tree: Ο περιηγητής συνδυάζει το DOM και το CSSOM για να δημιουργήσει το δέντρο απόδοσης (Render Tree). Το Render Tree περιέχει μόνο ορατά στοιχεία και τα στυλ τους. Τα στοιχεία με display: none δεν περιλαμβάνονται.
  12. Layout (Reflow): Ο περιηγητής υπολογίζει τη θέση και το μέγεθος κάθε στοιχείου στη σελίδα, βασιζόμενος στο Render Tree, το μέγεθος του παραθύρου και τα στυλ.
  13. Painting (Repaint): Ο περιηγητής ζωγραφίζει κάθε στοιχείο στην οθόνη στις υπολογισμένες θέσεις και με τα εφαρμοσμένα στυλ. Αυτό γίνεται σε στρώματα.
  14. Σύνθεση: Ο περιηγητής συνδυάζει τα ζωγραφισμένα στρώματα σε μια τελική εικόνα που εμφανίζεται στην οθόνη του χρήστη.
  15. Εκτέλεση JavaScript: Καθώς φορτώνουν και αναλύονται τα σκριπτ, ο κώδικας JavaScript εκτελείται. Η εκτέλεση JavaScript μπορεί να επηρεάσει το DOM και το CSSOM, προκαλώντας επανάληψη των βημάτων Layout και Painting (Reflow/Repaint).

Βασικά στάδια εμφάνισης περιεχομένου:

  • DOMContentLoaded: Το γεγονός ενεργοποιείται όταν ο περιηγητής έχει φορτώσει και αναλύσει πλήρως το HTML έγγραφο και έχει κατασκευάσει το DOM, αλλά περιμένει τη φόρτωση των φύλλων στυλ, εικόνων και υποπλαισίων.
  • Load: Το γεγονός ενεργοποιείται όταν ολόκληρη η σελίδα, συμπεριλαμβανομένων εικόνων, σκριπτ, στυλ και άλλων πόρων, έχει φορτωθεί πλήρως.