2009-08-11 2 views
9

Es ist mittlerweile allgemein bekannt, Stylesheets und Skripte zu kombinieren, um HTTP-Anfragen zu reduzieren. Ich habe 2 Fragen:HTTP Anfragen Optimierung: Was ist das Limit?

  1. Wie teuer sind sie, wirklich?
  2. Wann ist eine Anfrage zu groß, sollte sie geteilt werden?

Ich kann nicht die Antworten auf diese beiden Fragen in allen Online-Lesungen finde ich tat, wie Yahoo! Best Practices, die einige Male besagt, dass HTTP-Anforderungen teuer sind, aber nie nennen, warum oder wie.

Vielen Dank im Voraus.

Antwort

6

Eine HTTP-Anforderung erfordert eine TCP/IP-Verbindung hergestellt werden (Denken, 3-Wege-Handshake Handshaking), bevor er die HTTP-Anforderung es selbst behandeln kann

Dies beinhaltet zumindest eine Verzögerung des Sendens der SYN-Nachricht an der Server und das Zurückbringen des SYN/ACK (Es sendet dann das ACK, um den Sockel zu ÖFFNEN).

Also, die Verzögerung zwischen dem Client und dem Server ist einheitlich in beide Richtungen und 50ms, was zu einer 100ms Verzögerung führt, bevor es die HTTP-Anfrage senden kann. Es ist dann weitere 100ms, bevor es beginnt, die eigentliche Anfrage zurück zu bekommen (Sendet die Anfrage, dann antwortet der Server).

Natürlich müssen Sie auch berücksichtigen, dass ein Standard-Webbrowser die Anzahl gleichzeitiger HTTP-Anfragen begrenzt, die er zur gleichen Zeit bearbeitet. Wenn Ihre Anforderungen warten müssen, erhalten Sie diese Handshake-Zeit nicht umsonst (sozusagen), da Sie warten müssen, bis eine andere Verbindung beendet ist. Server spielen ebenfalls eine Rolle, je nachdem, wie sie die Anfragen bedienen.

+2

Wenn Sie zu dieser Antwort hinzufügen, öffnen die Browser normalerweise nur eine begrenzte Anzahl von TCP-Verbindungen gleichzeitig (~ 2..4) - wenn Sie also mehr Anfragen als diese Anzahl haben, werden sie in die Warteschlange gestellt. –

+0

Dachte, das hinzuzufügen, sobald ich auf Post klicke. Ziemlich wichtiges Detail wirklich. –

1

Ich habe keine Antwort wie teuer HTTP-Anfrage sind, aber es ist immer eine gute Idee, Roundtrips zwischen dem Client und dem Server zu reduzieren. Wenn Sie eine feste Datenmenge übertragen möchten, ist es immer besser, dies in weniger Anfragen zu tun.

2
  1. Immer wenn eine Anfrage gestellt wird, ist sie den harten Realitäten der Netzwerkzuverlässigkeit ausgesetzt. Zwei Anfragen, die in schneller Abfolge vom selben Standort aus gestellt werden, können völlig unterschiedliche Routen enthalten. Daher fügen Sie mit jeder Anfrage ein Element der Unvorhersehbarkeit in Bezug auf die Leistung hinzu. Eine einzelne konsolidierte Anfrage kann dazu beitragen, dieses Risiko zu verringern. @Dan McG schrieb einen Tonpunkt über den TCP-Handshake-Overhead.
  2. HTTP interessiert sich nicht für Anfrage Größe, wie es als Anwendungsprotokoll auf dem IP-Stack (Internet Protocol Suite) dient. Das ist für TCP/IP sorgen über, was für den Verleger Sorge wäre, hält Dokument/Dateigrößen so klein wie möglich und klein genug, dass ihre Anwendung performant genug ist.

Hoffnung, die Sinn macht.