Was ist der vollständige Prozess von der Eingabe einer url auf der Adressleiste des Browsers, um die gerenderte Seite in den browser?

Ich denke über diese Frage für eine lange Zeit. Es ist ein großen Frage, denn es deckt nahezu alle Ecken Bezug auf web-Entwicklung.

In meinem Verständnis, sollte der Vorgang so sein:

  1. geben Sie die url der Adressleiste
  2. eine Anfrage an den DNS-server auf Ihrem Netzwerk-Konfiguration
  3. DNS route, die Sie an die Reale IP des domain name
  4. eine Anfrage mit vollständigen Http-header) wird an den server geschickt werden(mit 3 s IP zu identifizieren)'s port 80(nehme an, dass wir nicht einen anderen port angeben)
  5. server sucht die listening-ports und weiterleiten der Anforderung an die app, die das hören auf port 80(sagen wir mal nginx hier) oder auf einen anderen server(dann 3 server wird wie ein load balancer)
  6. nginx wird versuchen, die url zu seiner Konfiguration und dienen als statische Seite direkt, oder rufen Sie das entsprechende Skript intepreter(e.g PHP/Python) oder eine andere app, um dynamische Inhalte(mit DB-Abfrage, oder andere logics)
  7. eine html zurückgeschickt browser mit einem kompletten Http-Antwort-header
  8. browser Parsen DOM von html mit seinen parser
  9. externe Ressourcen(JS/CSS/images/flash/videos..) beantragt werden in der Folge(oder nicht?)
  10. für JS, es wird durchgeführt von JS-engine
  11. für CSS, es wird gerendert, indem die CSS-engine und HTML-anzeigen werden angepasst basierend auf dem CSS(auch in der Folge, oder nicht?)
  12. wenn es ein iframe in den DOM, dann eine separate gleichen Prozess ausgeführt werden, von Schritt 1-12

Oben ist mein Verständnis, aber ich weiß nicht, ob es richtig oder nicht? Wie viel genau? Hab ich was verpasst?

Wenn es richtig(oder fast richtig), hoffe ich:

  1. Den Schritt die Beschreibung genauer in deinen Worten, oder schreiben Sie Ihre Schritte, wenn es eine große Veränderung
  2. Eine Tiefe Erklärung für jeden Schritt, der Sie am besten vertraut sind.
  3. Eine Antwort pro Schritt. Andere können machen, ergänzen in jeder Antwort Kommentar.

Und ich hoffe dieser thread kann helfen, alle web-Entwickler, um ein besseres Verständnis über das, was wir jeden Tag tun.

Und werde ich auf dieser Frage basiert auf den Antworten.

Dank.

InformationsquelleAutor Zhu Tao | 2011-03-02
Schreibe einen Kommentar