web-dev-qa-db-ger.com

Wie kann ich die "Zeit für das erste Byte" auf meiner Website reduzieren?

wenn Sie zur Startseite gehen, werden Sie feststellen, dass der Browser wartet, bevor die Seite geladen wird ...

Wie könnte ich Zeit für das erste Byte reduzieren ?

enter image description here

16
sparkle

Niemand kann Ihnen eine detaillierte Antwort geben, ohne dass Sie den Code zeigen, der für die Generierung des Inhalts der Website verantwortlich ist - denn hier liegt die Verzögerung.

Da die Site php verwendet, verwenden Sie jedoch höchstwahrscheinlich output buffering

Wenn dies der Fall ist, ergibt der folgende Code eine TTFB von (Netzwerklatenz +) 2s:

<?php ob_start(); ?>
<!doctype html>
<html>
    <head>
        <title>Slow to Load, Slow to finish</title>
    </head>
    <body>
    <?php 
        sleep(2); // Simulate slow processing
        echo "Body"
    ?>
    </body>
</html>

Während dies eine TTFB von (Netzwerk-Latenz +) 0s ergibt:

<!doctype html>
<html>
    <head>
        <title>Fast to load, Slow to finish</title>
    </head>
    <body>
        <?php ob_start(); ?>
        <?php 
            sleep(2); // Simulate slow processing
            echo "Body"
        ?>
    </body>
</html>

Die Zeit zum Laden der gesamten Seite ist in beiden Fällen gleich - nur wenn sich die Verzögerung ändert. Wenn Sie sich speziell auf die Reduzierung von TTFB konzentrieren (warum), sollten Sie genügend Informationen erhalten, um weiter nachforschen zu können.

IMPORTANT: Es gibt viele Änderungen am Frontend , die Sie vornehmen sollten, bevor Sie sich auf TTFB konzentrieren.

15
AD7six

Ich habe mich mit riesigen TTFB (8-10 Sekunden) beschäftigt und verzweifelt nach einer Lösung gesucht. Nachdem ich ohne Erfolg gesucht und gesucht hatte, beschloss ich, meine PHP Code- und Datenbankindizes näher zu betrachten.

Die Ausgabepufferlösung senkt meine TTFB ein bisschen, aber nicht genug. Ich hatte wieder Anwenderbeschwerden.

Das eigentliche Problem ist die Server-Verarbeitungszeit (DB-Abfragen und PHP Schleifen) und die Von Ihnen generierte HTML-Quelle .

Nun schlage ich folgende Schritte vor:

  1. Sehen Sie sich die Datenbankindizes an. Stellen Sie sicher, dass Sie die richtigen Indizes für " alle Daten verwenden "Sie kehren zurück . Verwenden Sie Erklären , um zu überprüfen, ob Ihr Index verwendet wird, welcher verwendet wird und wie er verwendet wird.

In meinem Fall gebe ich ein Array von Objekten zurück und überprüfe meine Indizes auf meine Haupttabelle. Alle sahen in Ordnung aus, aber ich habe vergessen, dass meine Objekte andere kleinere Objekte aus anderen Tabellen enthalten. Diese Tabellen wurden nicht richtig indiziert. Daher mein riesiger TTFB. Ich übergebe nur 8 Sekunden bis 2 Sekunden und füge den richtigen Index zu den richtigen Tabellen hinzu.

  1. Sehen Sie sich Ihren PHP Code an.

Möglicherweise haben Sie eine Schleife in der Schleife , deren Verarbeitung langsam sein kann. Sie sollten ein PHP MVC-Framework verwenden. Ihre Wahl. Ich werde keine nennen.

Vermeiden Sie solchen Code, auch wenn er funktioniert. Ich weiß, einige PHP4-Programmierer werden sagen, dass es gut ist. :)

$query = "SELECT something FROM table";
$result = mysqli_query($mysqli, $query);

if($result) {
    while($row = mysqli_fetch_assoc($result)) {
        $query = "UPDATE other_table SET something_else = "'.$row['something'].'";
        $result2 = mysqli_query($mysqli, $query)
    }
}
  1. Achten Sie auf den generierten HTML-Code .

Zum Beispiel erzeugen Sie Javascript-Code durch PHP Schleifen . Die Logik ist in Ordnung. Die Ladezeit ist nicht. Lassen Sie uns Angenommen, Sie geben 100 Zeilen in eine Tabelle zurück. Für jede Zeile haben Sie nur 5 mögliche Aktionen (Status ändern, bearbeiten, löschen, duplizieren, drucken). Dies bedeutet, dass 5 jQuery-Dialoge (HTML-Divs, mit Steuerelementen) und 5 JS-Skripte mit 100 multipliziert werden Zeilen = Tausende von Codezeilen, die auf diese Seite geschrieben werden sollen. In meinem Fall über 32.000 Zeilen in meinem HTML-Code von 4 MB. Gerade von 2 Sekunden auf unter 1 Sekunde übergegangen, nachdem ich alle diese Dialoge auf die richtigen JS-Funktionen gesetzt habe.

Zum Schluss , (falls Sie dies noch lesen :)) suchen Sie nicht nach magischen Funktionen, um Ihre TTFB zu reduzieren. Durchsuchen Sie Ihren Code und Ihre Datenbank.

PS: Einige andere Dinge tragen zur Geschwindigkeitssteigerung bei: Browser-Caching und -Komprimierung, Verwendung von CDN, Minimierung von HTML, CSS und JS, Verschieben des Parsings von JavaScript, Kombinieren von Bildern in CSS-Sprites usw. Verwenden Sie die Geschwindigkeit von Google-Seiten und Google Audits für weitere Leistungsvorschläge .

6
Adrian P.

Die Verzögerung wird durch das serverseitige Skript verursacht, das die Indexseite generiert.

Durch einen kurzen Blick auf Ihre Website kann ich vermuten, dass die Website PHP verwendet. Die Verzögerung wird also durch etwas verursacht, das in Ihrem index.php-Skript enthalten ist.

Das Hosting, das Netzwerk, die Hardware und der HTTP-Server (Apache) sind definitiv NICHT die Ursache. Ihr Diagramm zeigt, dass statische Dateien (.css, .js usw.) ziemlich schnell bereitgestellt werden.

Für weitere Informationen sollten Sie weitere Informationen bereitstellen (die langsame Ausführung von index.php kann viele verschiedene Gründe haben ...).

3
Frunsi

Fehler in .htaccess können die TTFB ebenfalls stark erhöhen.

Ich musste einige alte Codezeilen entfernen, die Wordfence hinterlassen hat, um meine 8-12 Sekunden lange TTFB (jetzt 500 ms) aufzulösen.

1
Supaiku

Ich denke, es hängt davon ab, mit welchen Tools Sie diese Art von Daten messen. Als ich webpagetest.org verwendete, war die Zeit bis zum ersten Byte 292 ms, was gut ist. Vielleicht sollten Sie Ihren Scheck erneut ausführen?

Ein Teil dieser Anzahl hängt davon ab, wo Sie sich in Bezug auf den Server befinden - je mehr Hops Sie ausführen müssen, desto größer ist diese Anzahl. Es geht auch um die Serverhardware und die Konnektivität - normalerweise können Sie dies nicht wirklich kontrollieren. Vielleicht möchten Sie andere Hosts kennenlernen, aber ich würde zuerst ein paar weitere Tests durchführen - bringen Sie Ihre Freunde dazu, Ihre Website auf webpagetest.org (oder ähnlichem) zu testen und sehen Sie, welche Werte sie erhalten.

0
Alex Holsgrove