HTTP 的 1.0
Frage 1: Kurze Verbindung
http basiert auf dem Tcp-Protokoll, da es sich um eine kurze Verbindung handelt. Jede http; Verbindung und Trennung entspricht dem Drei-Wege-Tcp-Handshake, der Slow-Start-Verbindung und der vierwelligen Trennung. (Dies kann durch Einstellen von Verbindung: Keep-Alive gelöst werden.)
Problem 2: Blockieren
Die Anzahl der vom Client initiierten gleichzeitigen Anforderungen ist festgelegt. Wenn zu viele Anforderungen vorhanden sind, werden sie in die Warteschlange gestellt und blockiert.
HTTP 1.1-Optimierung
Optimierung 1: Lange Verbindung
Ein TCP-Verbindungskanal kann mehrere HTTP-Anforderungen parallel schalten und schließt. Der Server verarbeitet jedoch weiterhin die Reihenfolge der Clientanforderungen. Der Server wird also weiterhin blockiert.
Optimierung 2: Cache-Optimierung
Cache-Verarbeitung In HTTP1.0 werden hauptsächlich If-Modified-Since und Expires im Header als Kriterien für die Caching-Beurteilung verwendet. HTTP1.1 führt weitere Cache-Steuerungsstrategien ein, z. B. Entity-Tag, If-Unmodified-Since, If-Match, If-None-Match und weitere optionale Cache-Header stehen zur Steuerung der Cache-Strategie zur Verfügung.
Optimierung 3: Verwaltung von Fehlerbenachrichtigungen.
In HTTP1.1 wurden 24 Fehlerstatus-Antwortcodes hinzugefügt. Beispiel: 409 (Konflikt) gibt an, dass die angeforderte Ressource mit dem aktuellen Status der Ressource in Konflikt steht. 410 (Gone) gibt an, dass eine Ressource auf dem Server dauerhaft gelöscht wird
Optimierung 4: Neue Anforderungsmethode
PUT: Fordern Sie den Server auf, eine Ressource zu speichern.
DELETE:
Fordern Sie den Server auf, die identifizierte Ressource zu löschen. OPTIONEN: Fordern Sie die Leistung des Servers an oder fragen Sie die Optionen und Anforderungen für die Ressource ab.
TRACE: Fordern Sie den Server auf, die empfangenen Anforderungsinformationen hauptsächlich zum Testen zurückzusenden Oder Diagnose;
CONNECT: Für zukünftige Verwendung reserviert
Optimierung 5: Hostoptimierung
Host-Optimierung hinzugefügt, über verschiedene Hosts kann Service unterstützt werden Eine IP entspricht mehreren virtuellen Host-Hosts.
Optimierung 6: Wiederaufnahme der Upload-Optimierung
Das Feld für den Bereichskopf wird eingeführt, mit dem nur ein bestimmter Teil der Ressource angefordert werden kann, dh der Rückkehrcode lautet 206 (Teilinhalt). Dies erleichtert Entwicklern die freie Auswahl, um Bandbreite und Verbindungen voll auszunutzen.
HTTP2.0-Optimierung
Optimierung 1: Voll gemultiplext
Der Client und der Server können parallel initiieren oder antworten, um die durch die Serialisierung verursachte Blockierung zu vermeiden.
Optimierung 2: Nachrichtenkomprimierung
Mehr Komprimierungsalgorithmen und optimierte Übertragung von wiederholten Feldern wie Cookies
Optimierung 3: Binäres Framing
Binäre Rahmenebene hinzugefügt. Zwischen der http-Schicht und tcp kann der Rahmen am anderen Ende ungeordnet und zusammengesetzt werden.
Optimierung 4: Server-Push
Eine Anfrage an den Kunden, mehrere Antworten
Fordern Sie Beispiele und Analysen an
// 请求
GET / HTTP/1.1
Host:xxx.xxxx.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2016042316 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: Mon, 25 May 2016 03:19:18 GMT
//响应
HTTP/1.1 200 OK
Cache-Control: private, max-age=30
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Mon, 25 May 2016 03:20:33 GMT
Last-Modified: Mon, 25 May 2016 03:20:03 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 25 May 2016 03:20:02 GMT
Content-Length: 12173
Statuscode Bedeutung
HTTP 1.1-Statuscodes und ihre Bedeutung
Der Statuscode besteht aus drei Ziffern. Die erste Ziffer definiert die Antwortkategorie und es gibt fünf mögliche Werte:
1xx: Hinweisnachricht - Zeigt an, dass die Anforderung empfangen wurde. Setzen Sie die Verarbeitung fort
2xx: Erfolgreich - Zeigt an, dass die Anforderung erfolgreich empfangen, verstanden und akzeptiert wurde
3xx: Um die Anforderung abzuschließen, müssen weitere Umleitungsmaßnahmen ergriffen werden
4xx: Clientfehler - Die Anforderung weist einen Syntaxfehler auf oder die Anforderung kann nicht erfüllt werden
5xx: Serverseitiger Fehler - Der Server konnte eine legitime Anforderung nicht erfüllen
Referenz:
https://www.jianshu.com/p/52d86558ca57
https://www.debugger.wiki/article/html/1565502376358922
https://juejin.im/entry/6844903489596833800
https://blog.csdn.net / zhglance / article / details / 76162176
https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/232