Was passiert, wenn Sie eine Webseite öffnen?

Was passiert, wenn Sie eine Webseite öffnen?

Geben Sie die URL in den Browser ein oder klicken Sie auf den Link, und die Webseite wird geöffnet. Dies ist eine alltägliche Szene, wenn wir im Internet surfen, aber hinter dieser einfachen Erscheinung verbirgt sich ein äußerst komplexer technischer Prozess. Möchten Sie Ihr Wissen erweitern? Lesen Sie weiter.

Der Ablauf einer HTTP-Anfrage

Beginnen wir der Einfachheit halber mit einer HTTP-Anforderung und stellen kurz den Netzwerkübertragungsprozess einer HTTP-Anforderung vor, d. h. „was von der Eingabe der URL bis zum Abschluss des Seitendownloads passiert“.

● DNS Lookup ermittelt zunächst die IP-Adresse, die der URL entspricht

● Socket Connect Der Browser und der Server stellen eine TCP-Verbindung her

● Anfrage senden HTTP-Anfrage senden

● Der Content-Download-Server sendet eine Antwort

Wenn wir auf der physischen Ebene darüber sprechen würden, wäre das ein wenig unkonventionell. Wenn Sie mit diesen Schritten immer noch einverstanden sind, lassen Sie uns über die damit verbundenen Leistungsprobleme sprechen.

● Wenn Sie sich noch an die DNS-Abfrage erinnern, denken Sie jetzt darüber nach. Bei der DNS-Suche geht es darum, mit unzähligen DNS-Servern zu kommunizieren, um eine Zeichenfolge von IP-Adressen zu erhalten. Wie viel Zeit nimmt dies in Anspruch? Vergessen Sie nicht, dass Sie nach Abschluss der Abfrage noch nicht mit dem dortigen Server kommuniziert haben.

● Eine TCP-Verbindung erfordert drei Handshakes. Wie lange dauert dieser Drei-Wege-Handshake, wenn der Server weit entfernt ist? Vergessen Sie nicht, dass Sie nach dem Verbindungsaufbau noch keine Anfrage gesendet haben. (Normalerweise ist es in 0,5 Sekunden draußen)

● Beim Senden einer HTTP-Anfrage müssen Sie wissen, dass unsere Netzwerkbandbreite für Upstream und Downstream normalerweise unterschiedlich ist. Normalerweise ist die Upstream-Bandbreite kleiner. Es ist in Ordnung, wenn es nur eine ist, aber heutzutage stellen Webseiten normalerweise aufeinanderfolgende Anfragen für viele Ressourcen. Was sollen wir tun, wenn der Upstream überlastet ist und die Bandbreite gering ist? Vergessen Sie nicht, dass wir Schritt 3 erreicht haben. Der Server hat Ihnen noch keine Antwort gesendet und Ihr Browser kann noch nichts zeichnen.

● Schließlich sendet der Server eine Antwort, aber leider ist der von Ihnen besuchte Server sehr ausgelastet, Zehntausende von Menschen benötigen diese Ressource und die Upstream-Bandbreite des Servers ist außerdem begrenzt. Was sollten Sie tun?

Ich denke, ich habe mir einige ziemlich gute Interviewfragen ausgedacht. Übrigens haben die Verzögerung und die Netzwerkbandbreite der ersten beiden Schritte kaum Auswirkungen; Durch Hinzufügen von Bandbreite zu den letzten beiden Schritten kann das Problem bis zu einem gewissen Grad gemildert werden, aber Sie benötigen dafür Geld und es ist sehr teuer.

Obwohl der Blogger das lokale Rendering von WebKit optimiert hat, weiß er, dass die meiste Zeit, die zum Laden einer Webseite benötigt wird, für die Netzwerkkommunikation verschwendet wird. Daher ist die Optimierung dieser Schritte weniger arbeitsintensiv und effektiver als die Optimierung des Browserkernels.

Zusammenfassend sind die wichtigsten Optimierungsmethoden im Netzwerk nichts anderes als Caching, Prefetching, Komprimierung und Parallelität. Wenn es in Zukunft im Vorstellungsgespräch Fragen zur Leistungsoptimierung gibt, kann jeder diese auf diese Weise berücksichtigen.

Im Folgenden werden die bestehenden Optimierungsverfahren schrittweise vorgestellt.

DNS-Optimierung

Wenn es um DNS-Optimierung geht, ist Caching zweifellos die einfachste, brutalste und effektivste Methode. Wenn wir über Cache sprechen, müssen wir die Cache-Hierarchie erwähnen:

● Browser-DNS-Cache

● System-DNS-Cache

● Hosts-Datei

● Cache auf jedem DNS-Server

Natürlich ist die Ablaufzeit des DNS-Caches normalerweise relativ kurz, sodass in vielen Fällen eine erneute Suche erforderlich ist. Um die für Benutzer spürbare Verzögerung zu verringern (beachten Sie, dass es sich hierbei nicht um eine Netzwerkverzögerung handelt), ist Prefetching eine gute Methode.

Wenn Sie beispielsweise eine URL eingeben, haben Sie diese noch nicht vollständig eingegeben, aber der Browser findet anhand Ihres Verlaufs heraus, dass Sie wahrscheinlich eine bestimmte Website besuchen werden, und ruft daher im Voraus den DNS für Sie ab. Wenn Sie beispielsweise ein „w“ eingeben, hat Chrome Ihnen bereits dabei geholfen, die IP-Adresse von weibo.com zu finden. Chrome-Benutzer können chrome://predictors überprüfen und Sie werden es wissen.

Darüber hinaus zeichnet der Browser Ihren bisherigen Verlauf auf und weiß, welche anderen Links sich normalerweise unter jedem Domänennamen befinden, um die Topologie der Website zu ermitteln. Wenn Sie eine Website unter diesem Domänennamen besuchen, wird im Voraus eine DNS-Auflösung für andere verknüpfte Domänennamen durchgeführt.

TCP-Optimierung

Wenn Sie sehen, wie kompliziert die DNS-Optimierung ist, wissen Sie, dass dieser einfache Schritt nicht so einfach ist.

Daher ist die Optimierung von TCP eigentlich einfach, da DNS die IP bereits im Voraus erhalten hat. Wir müssen also nur die vorherigen Schritte ausführen, um die Verbindung herzustellen.

Wenn Sie also den ersten Buchstaben eingeben, ist die DNS-Auflösung abgeschlossen und die Verbindung hergestellt, aber möglicherweise haben Sie die URL zu diesem Zeitpunkt noch nicht vollständig eingegeben. Wenn Sie eine Website zum ersten Mal besuchen, hilft Ihnen der Browser schnell dabei, eine TCP-Verbindung zu anderen Servern herzustellen.

HTTP-Transportoptimierung

An diesem Punkt denken manche Leute vielleicht, dass, da die TCP-Verbindung bereits hergestellt ist, sie einfach einen Schritt weiter gehen und den gesamten Linkinhalt direkt vorab abrufen könnten, sodass die Webseite geladen wird, bevor sie mit der Eingabe der URL fertig ist.

Diese Idee ist gut, aber die Realität ist grausam, denn wir müssen bedenken, dass unsere Bandbreite begrenzt ist. DNS- und TCP-Verbindungen sind relativ leicht und beanspruchen nicht zu viel Netzwerkbandbreite, bei der HTTP-Übertragung ist das jedoch anders. Wenn Sie alle Ihre Links vorab abrufen, ist Ihre Bandbreite schnell erschöpft, sodass Ihre normalen Anforderungen nicht erfüllt werden können und die Leistung erheblich beeinträchtigt wird.

Der Cache erscheint erneut, und wenn wir den Cache erwähnen, müssen wir die Hierarchie erwähnen.

● PageCache ist am schnellsten. Es speichert die DOM-Struktur und die Rendering-Ergebnisse der vorhandenen Webseite direkt im Speicher. Deshalb geht das Vor- und Zurückklicken so schnell.

● HTTP-Cache: Der Cache auf Dateiebene wird auf dem lokalen Dateisystem gespeichert und gemäß RFC2616 implementiert.

● Proxy-Cache Wenn Sie einen Proxy-Server für den Internetzugang verwenden, folgt der Proxy-Server normalerweise dem Cache-Standard

● CDN ist ein Inhaltsserver, der sich geografisch in Ihrer Nähe befindet. Wenn Sie beispielsweise in Hangzhou in Peking ein Bild von Taobao anfordern und das Bild auf einem CDN in Peking verfügbar ist, müssen Sie nicht nach Hangzhou fahren.

● DMOC (Distributed Memory Object Caching System) CDN speichert hauptsächlich statische Daten, aber normalerweise gibt es auf der Webseite viele dynamische Daten, die in der Datenbank überprüft werden müssen. Bei erhöhtem Verkehr wird der Druck sehr hoch sein. Normalerweise gibt es außerhalb des Servers eine Speicher-Cache-Serverschicht, die ausschließlich zum Zwischenspeichern von Objekten in diesen Datenbanken dient. Laut „Taobao-Technologie in den letzten 10 Jahren“ können dadurch 99,5 % der Datenbankzugriffe reduziert werden.

● Server Tatsächlich gehen nicht viele Anfragen tatsächlich auf den Server ein.

Haben Sie nach dieser Betrachtung darüber nachgedacht, wo Sie eine weitere Cache-Ebene hinzufügen können? Tatsächlich können Sie es zwischen 2 und 3 hinzufügen, d. h. Cache auf dem Router hinzufügen.

Die von Xiaomi Router und Sogou entwickelte Prefetching-Engine entspricht tatsächlich dem Hinzufügen einer Cache-Ebene auf dem Router und der Durchführung eines intelligenten Prefetchings. Warum müssen wir hier einen separaten Absatz beginnen, um über Xiaomi zu sprechen? Könnte es Xiaomis Marine sein? Nein, der Grund dafür ist, dass der Blogger untröstlich war, als er diese Neuigkeit sah, da sie mit seinem Abschlussprojekt kollidiert.

Der Blogger hatte diese Idee letztes Jahr, als 360 gerade das tragbare WLAN auf den Markt brachte, und dachte darüber nach, dies zu nutzen, um ein Geschäft zu gründen und nach der Herstellung dieses Produkts eine Zusammenarbeit mit 360 zu besprechen. Infolgedessen hat er es erst kürzlich fertiggestellt und die Arbeit eingereicht. Er träumte davon, den Höhepunkt seines Lebens zu erreichen und die Branche aufzumischen, doch dann stellte er fest, dass Xiaomi und Sogou dasselbe Produkt auf den Markt gebracht und vermarktet hatten. Der Höhepunkt meines Lebens ist vorbei. Wenn ich das gewusst hätte, hätte ich letztes Jahr ein Patent angemeldet.

Eine weitere häufig verwendete HTTP-Optimierung ist die Komprimierung. Netzwerkübertragungszeit = Nachrichtengröße/Netzwerkgeschwindigkeit. Da die Netzwerkgeschwindigkeit relativ teuer ist, komprimieren Sie sie. Die meisten Server gzippen die HTTP-Nachrichten. Sie können es im HTTP-Header sehen, ich werde nicht ins Detail gehen.

Zukünftiges Protokoll: SPDY

Bei den oben genannten Praktiken handelt es sich allesamt um traditionelle Praktiken. Im Folgenden wird über zukünftige Technologien diskutiert. Da das HTTP-Protokoll im letzten Jahrhundert entwickelt wurde und sich nicht mehr gut an die Entwicklung des aktuellen Webs anpassen kann, schlug Google das SPDY-Protokoll vor, das derzeit eine Basisversion des in der Spezifikation befindlichen HTTP2.0-Standards darstellt.

SPDY hat die folgenden Hauptfunktionen:

● Mehrere HTTP-Verbindungen können parallel über eine TCP-Verbindung verbunden werden, um die zum Herstellen von Verbindungen benötigte Zeit zu verkürzen.

● Anforderungspriorität (es wurde bisher keine spezifische Implementierung gesehen).

● HTTP-Header-Komprimierung: Bei der oben erwähnten HTTP-Komprimierung handelt es sich um die Komprimierung des HTTP-Texts, nicht des Headers. Bei kleinen HTTP-Nachrichten macht der Header immer noch einen großen Anteil aus und im aktuellen Web gibt es eine große Anzahl kleiner Nachrichten.

● Server-Push/Hinweis: Der Server pusht aktiv Objekte (Sie können sich das so vorstellen, als würde der Server dem Client beim Vorabrufen helfen).

In der Branche gibt es derzeit sowohl Lob als auch Kritik für SPDY, und auch Blogger sind vorsichtig, vor allem in Bezug auf 1 und 4. 4 ist eigentlich dasselbe wie der zuvor erwähnte Widerspruch zum direkten HTTP-Prefetching. Was passiert, wenn die übertragenen Daten nicht benötigt werden und Bandbreite belegen? Es ist schwierig, den Hinweis umzusetzen.

Das erste potenzielle Risiko besteht darin, dass die TCP-Verbindung auf halbem Weg getrennt wird und dann alle Verbindungen gestoppt werden. Diese Situation kommt im PC-Internet möglicherweise seltener vor, im mobilen Internet kommt es jedoch immer noch relativ häufig zu TCP-Verbindungsabbrüchen.

Da es sich jedoch um eine Zukunftstechnologie handelt, ist es weiterhin notwendig, ihr Aufmerksamkeit zu schenken.

Als Gewinner des Qingyun-Plans von Toutiao und des Bai+-Plans von Baijiahao, des Baidu-Digitalautors des Jahres 2019, des beliebtesten Autors von Baijiahao im Technologiebereich, des Sogou-Autors für Technologie und Kultur 2019 und des einflussreichsten Schöpfers des Baijiahao-Vierteljahrs 2021 hat er viele Auszeichnungen gewonnen, darunter den Sohu Best Industry Media Person 2013, den dritten Platz beim China New Media Entrepreneurship Competition Beijing 2015, den Guangmang Experience Award 2015, den dritten Platz im Finale des China New Media Entrepreneurship Competition 2015 und den Baidu Dynamic Annual Powerful Celebrity 2018.

<<:  China Passenger Car Association: Chinas Autoimporte werden im Jahr 2023 799.000 Einheiten erreichen, ein Rückgang von 10 % gegenüber dem Vorjahr

>>:  Le Xiaobao Story Optische Maschine Demontagebericht

Artikel empfehlen

Der Supermond kommt! Denken Sie daran, morgen Abend vorbeizukommen und zu sehen

Plakatproduktion: Feng Juan Laut Experten der Ast...

Hinter Tencents 736 Millionen Dollar Investition in 58.com

Am Abend des 27. Juni begann für die Fußballweltm...

Was sind einige Sporttipps?

Wie das Sprichwort sagt: „Das Leben liegt in der ...

Was ist Klettern?

Klettern ist eine vom Bergsteigen abgeleitete Spo...

Warum ist das Samsung Note 7 während des Rückrufs nicht explodiert?

Der Rückruf des Samsung Galaxy Note7 ist in die l...

Welche Art von Übung kann Ihnen helfen, größer zu werden

Die Körpergröße ist genetisch bedingt, das heißt,...

Wann ist die beste Zeit zum Laufen?

Laufen ist mittlerweile eine Sportart, die viele ...

Was ist das beste Getränk nach einem Basketballspiel?

In der High School besteht die tägliche Aufgabe d...