Was verursacht die Wartezeit, bevor mein HTML geladen wird?


10

Ich habe eine Website, die sehr langsam zu laden scheint. Wenn ich einen Geschwindigkeitstest darauf durchführe, sehe ich, dass es eine Lücke von 6 Sekunden gibt, bevor der HTML-Code geladen wird. Bilder und JS-Skripte werden danach sehr schnell geladen.

Sie können im Bild unter den gelben Balken für die Wartezeit sehen:

Das Laden der HTML-Datei dauerte mehr als 5 Sekunden, während die meisten anderen Assets in weniger als 1 Sekunde geladen wurden

Dies scheint unabhängig vom HTML-Inhalt auf der Seite konsistent zu sein.

Diese Site verwendet ein CMS (ModX Revo), sodass HTML tatsächlich in einer SQL-Datenbank gespeichert und von PHP bereitgestellt wird. Dieses Problem ist mir jedoch noch nie aufgetreten.

Würde jemand wissen, was dies verursacht und wie ich es beschleunigen könnte?


Ist das eine neue Sache? Das heißt, wurden diese Seiten zuvor normal und jetzt schlecht ausgeführt? Oder ist dies eine neuere Installation / Site? Kannst du uns mehr erzählen?
Schranknoc

1
Wenn dies nicht durch ein zwischengeschaltetes Netzwerk aufgehalten wird, scheint dies die Zeit zu sein, die Ihr Server benötigt, um die Antwort zu generieren. Sie sagen "egal was der HTML-Inhalt ist" - HTML-Inhalt über Ihr CMS oder buchstäblich eine statische HTML-Seite? Ich würde auf jeden Fall eine einfache statische HTML-Seite "Hello World" ausprobieren, wenn Sie dies noch nicht getan haben. Beachten Sie auch, dass sich die Server von pingdom auf der anderen Seite der Welt nach Australien befinden (von dem ich annehme, dass Sie dort gehostet werden).
MrWhite

1
IMO liegt das Problem hauptsächlich bei dieser einen Seite - Ihr Server / CMS scheint lange zu brauchen, um die Antwort zu generieren. Ineffiziente SQL-Abfrage? Andere Seiten Ihrer Website scheinen relativ schnell zu sein. (?)
MrWhite

Antworten:


12

Der Fachbegriff für das Warten wird als Zeit bis zum ersten Byte bezeichnet und bestimmt die Reaktionsfähigkeit eines Webservers oder anderer Netzwerkressourcen.

Einige häufige Gründe, warum Sie möglicherweise eine hohe Zeit bis zum ersten Byte sehen:

  • Überlastetes Netzwerk (normalerweise Shared Hosting)
  • Fehlkonfigurationsserver
  • Entfernung von Ihnen und dem Server (der geografische Standort spielt eine untergeordnete Rolle)
  • Serverfehler (Hops)

Im Allgemeinen tritt dieses Problem häufig beim Shared Hosting auf, da viele Websites und Besucher sie besuchen, was natürlich die Netzwerkbytezeit verlängert. Eine andere mögliche Ursache ist ein Fehler im Netzwerk, z. B. ein Hop oder weil sich Ihr Server nicht am Standort Ihrer Zielgruppe befindet. Beispielsweise hat ein "GUTER" britischer Server eine geringere Bytezeit als ein US-amerikanischer Server, der auf Benutzer im Internet abzielt Großbritannien, aufgrund der Entfernung, über die die Daten gesendet und empfangen werden müssen (normalerweise eine Zunahme von ca. 100-200 ms).

Vielleicht eine Zeit, um einen neuen Gastgeber zu bekommen

In der Vergangenheit musste ich aufgrund der Verzögerung der Zeit bis zum ersten Byte von Server zu Server wechseln. Möglicherweise müssen Sie einen neuen Webhost auswählen oder Ihr aktuelles Paket aktualisieren.

Zuverlässige Tests

Das Testen der Geschwindigkeit Ihrer Website von Ihrem Heim-Breitband aus ist sehr voreingenommen, da es möglicherweise ein Problem ist, wenn Ihr Breitband nicht auf die Website reagiert. Sie sollten Ihre Website mit mehreren Verbindungen von mehreren Servern testen ... Ich empfehle, Webseiten zu testen und mehrere Tests gleichzeitig von verschiedenen Standorten und vielen in der Zielgruppe aus durchzuführen. Dies gibt Ihnen einen besseren Überblick darüber, was los ist. Wenn es das erste Byte ist, empfehle ich Ihnen, sich vor allem an Ihren Webhost zu wenden.

Ping und Trace leiten den Server weiter

Wenn Sie versuchen, einen Ping auf dem Server auszuführen, werden die Ergebnisse möglicherweise angezeigt oder nicht. Ping verwendet ICMP anstelle von UDP oder TCP, was bedeutet, dass der Server nicht an Port 80 abgefragt wird, auf dem Ihr httpd ausgeführt wird. Sie können die Trace-Route verwenden, um alle Server auf der Route zu identifizieren, die dazu führen könnten, dass sich das erste Byte erneut erhöht. Der httpd-Server an Port 80 wird nicht abgefragt. Wenn die Traceroute unter Windows ausgeführt wird, werden ICMP und Mac / Linux verwendet Maschinen verwenden UDP. Es lohnt sich zu testen, weil es so schnell und einfach geht, aber wenn die Ergebnisse wieder gut sind, bedeutet das nicht unbedingt, dass es irgendwo kein Problem gibt.


Hallo @SunWKim Ich habe meine Antwort mit dem aktualisiert, was Sie gefragt haben. Schauen Sie sich den Ende meiner Antwort an.
Simon Hayter

Ich stimme Ihren gemeinsamen Gründen für die Zeit bis zum ersten Byte zu. In diesem Fall jedoch; Ich glaube, es hat mehr mit JavaScript-Code zu tun.
So

Das erste Byte kann durch eine Vielzahl von Ursachen verursacht werden, aber JavaScript gehört nicht dazu, da die Header-Antwort vor Inline-Elementen wie JavaScript, CSS, Bildern usw. steht. Verwechseln Sie das erste Byte nicht mit tatsächlichen Elementen und Dateien.
Simon Hayter

Ich verwechsle die beiden nicht. Wenn Sie mbff.com.au besucht und selbst gesehen haben, können Sie davon überzeugt sein, dass es keine Frage der Zeit für das erste Byte ist. Die Verzögerung tritt nach der ersten Header-Antwort auf.
So

1
The delay is occurring after the first header responsedann ist das nicht das erste Byte. Das erste Byte ist die erste Antwort.
Simon Hayter

4

1) Sie haben Adobe TypeKit, das nicht asynchron mit dem aktuellen Code geladen wird. Versuchen Sie, es durch den erweiterten asynchronen Code zu ersetzen: http://help.typekit.com/customer/portal/articles/649336-embed-code

Dieser Standardeinbettungscode nutzt die Tatsache aus, dass Tags das weitere Rendern der Seite blockieren, um das FOUT [Flash of Unstyled Text] zu verhindern. Während das Typekit-Skript geladen wird, wird das Rendern der Seite blockiert, sodass der Text nicht mit Fallback-Schriftarten gerendert werden kann.

2) Mit neuem TypeKit testen. Wie ist die Ladezeit jetzt? Besser? Fahren Sie mit Schritt 3 fort.

3) Ersetzen Sie Google Analytics durch ein aktualisiertes JavaScript mit der neuesten asynchronen Syntax: https://developers.google.com/analytics/devguides/collection/gajs/

4) Test. Ist das Laden der Seite noch besser?

5) Erwägen Sie abschließend die Optimierung von Bildern wie pattern.jpg. Ich habe es in ein PNG konvertiert und konnte die Dateigröße von 199 KB auf 56 KB reduzieren. Dies verkürzt die Zeit zum Empfangen der Datei: https://www.dropbox.com/s/i06jx509bmprhhh/pattern.png?dl=0

Ich hoffe das hilft.


3

PHP vs. Nicht-PHP-Elemente

Wenn Sie die Ladezeiten Ihrer Nicht-PHP-Assets mit Ihren PHP-basierten Ladezeiten vergleichen, werden Sie feststellen, dass der Server schnell reagiert, wenn PHP nicht beteiligt ist.

Dies weist normalerweise auf Probleme innerhalb Ihres PHP-Skripts hin.

Das Problem kann innerhalb der PHP-Schicht oder der Datenbank liegen. Mithilfe fortschrittlicher Debugging-Tools wie XDebug oder NewRelic können Sie den Engpass schnell erkennen.

Probleme mit der Zeit bis zum ersten Byte können durch Hardwareeinschränkungen, schlechte Konfiguration oder ineffizienten Code verursacht werden. Beim Shared Hosting sind Hardwareeinschränkungen und eine schlechte Konfiguration am wahrscheinlichsten.

In jedem Fall bedeutet das Lösen des Problems normalerweise eines oder alle der folgenden Elemente:

  • Mehr Hardware
  • Bessere Programmierung
  • Caching hinzufügen

Schnellere Hardware ist eine offensichtliche, aber oft kostspielige Lösung, wenn Sie bereits über dedizierte Ressourcen verfügen.

Eine bessere Programmierung ist möglicherweise nicht möglich, wenn das Problem auf Code zurückzuführen ist, den Sie nicht warten, oder wenn Entwicklerressourcen fehlen.

Das Caching hilft, indem es die Anzahl der Anforderungen reduziert, die die zugrunde liegenden Ressourcen mit schlechter Leistung treffen müssen.

Testen

Stellen Sie bei der Verwendung von Testtools sicher, dass Sie mehrere Läufe ausführen. Netzwerk- und temporäre Serverspitzen können Sie leicht auf den falschen Weg führen. Sie möchten daher versuchen, diese zu mitteln.

Hosting

Wenn Sie sich in einem gemeinsam genutzten Hosting-Konto befinden, sollten Sie auf Cloud- oder VPS-Dienste umsteigen, um einen besseren Einblick in Leistungsprobleme zu erhalten. Wenn Sie keine Caching-Technik (CDN- oder Cloudflare-Dienst) verwenden, kann die Korrektur von Leistungsproblemen auf gemeinsam genutzten Massenhosting-Systemen sehr schwierig sein, da Sie keine ausreichende Kontrolle über den Server haben.


-1

Versuchen Sie, Cookies von Drittanbietern auf nur besucht zu setzen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.