Zwischenspeichern von .PHP-Dateien mit IIS8 ausgeben – Zeit bis zum ersten Byte

Lesezeit: 2 Minuten

Ich habe einen VPS mit 4 Kernen und 5 GB RAM mit Windows Server 2012 und IIS8. Ich betreibe darauf eine WordPress-Site mit MySQL als InnoDB-Datenbank. MySQL hat ungefähr 70% meines verfügbaren RAMs zum Cachen/Puffer gegeben, was wunderbar funktioniert. Ich habe Wincache aktiviert, Output Caching aktiviert für im Grunde alles ABER .php-Dateien. Meine Zeit bis zum ersten Byte liegt bei 1400-1800 ms, was meiner Meinung nach viel zu langsam ist.

Ich habe das Output Caching für alle PHP-Dateien aktiviert, wodurch es auf 8 ms reduziert wurde. Perfekt! Dachte ich zumindest… Weil es jetzt die gesamten PHP-Dateien zwischenspeichert, werden natürlich keine nachfolgenden Seiten geladen. Dies liegt daran, dass WordPress nachfolgende Seiten als Abfrage lädt, nicht als neue Datei.

Ich musste das Output Caching für PHP-Dateien vollständig deaktivieren, kann aber anscheinend keine andere Lösung finden, um die Zeit bis zum ersten Byte/Antwortzeit zu verringern. Hat hier jemand gute Vorschläge mit Wincache oder Output Caching, um die ~8ms-Ergebnisse zu erzielen, die ich zuvor hatte?

Alle Out-of-the-Box-Vorschläge werden ebenfalls sehr geschätzt!

Benutzer-Avatar
njs

Nach vielen Kopfschmerzen habe ich endlich herausgefunden, woher ein großer Teil dieses langsamen TTFB kam. Der MySQL-Treiber MySQLnd von PHP/IIS8 ist schuld. Da der AAAA (IPv6)-Eintrag Vorrang vor dem A (IPv4)-Eintrag hat, gibt „localhost“ eine IPv6-Adresse zurück. Und da der MySQL-Treiber (mysqlnd) in PHP keine IPv6-Adressen verarbeiten kann, muss er zuerst eine Zeitüberschreitung haben, bevor er versucht, eine Verbindung über IPv4 herzustellen.

Ich habe meine TTFB von 1400-1800 ms auf nur 200-400 ms reduziert. Schon tonnenweise besser. Den Rest kann ich wahrscheinlich .css/.js-Aufrufen und anderen Dingen zuschreiben.

Um das obige Problem zu lösen: Verwenden Sie anstelle von „localhost“ entweder 127.0.0.1 oder gethostbyname(“localhost“), da diese Funktion immer eine IPv4-Adresse zurückgibt. Letzteres ist die bessere Lösung, da Sie eines Tages möglicherweise eine Verbindung zu einer externen MySQL-Datenbank mithilfe eines Hostnamens herstellen möchten.

Ich hoffe, dies wird anderen Menschen mit TTFB-Problemen helfen!

  • Obwohl ich es geschafft habe, dieses Problem zu “beheben”. Bitte zögern Sie nicht, weitere Vorschläge zur weiteren Reduzierung der TTFB hinzuzufügen!

    – njs

    25. Mai 2014 um 21:07 Uhr

1354600cookie-checkZwischenspeichern von .PHP-Dateien mit IIS8 ausgeben – Zeit bis zum ersten Byte

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy