Ich versuche, eine WordPress-Website zu optimieren, die unter langsamen Ladezeiten leidet, und habe festgestellt, dass das Laden der Startseite anscheinend viel länger dauert. Es liegt nicht am Inhalt, da ich nur überlege, wie lange es dauert, bis die Basisanforderung endet (sichtbar über Firebug in Firefox).
Außerdem habe ich versucht, den index.php-Code in eine benutzerdefinierte Seite zu kopieren, und der gleiche exakte Code wird in ungefähr 1 Sekunde geladen, während das Haupt-Home in ungefähr 7 Sekunden geladen wird. Ich bemerkte, dass einzelne Seiten schneller geladen wurden, und zuerst dachte ich, dass dies daran lag der Unterschied im Inhalt, aber nach diesem Test bin ich nicht sicher, was dies verursacht.
Gibt es viel, was WordPress hinter den Kulissen nur für den Hauptindex macht? Gibt es eine andere Möglichkeit, diese Situation zu erklären und, was noch wichtiger ist, zu beheben, damit die Startseite schneller geladen wird?
UPDATE - SCHMUTZIGE LÖSUNG
Nach vielen blinden Versuchen habe ich eine neue Seite namens home erstellt, die index.php
als benutzerdefinierte Vorlage verwendet wird (keine Kopie, dieselbe Datei). Ich habe jeden Aufruf an den Basispfad umgeleitet (über das interne Umschreiben von WordPress) und habe dieselbe Homepage wie zuvor, die nur in 1/6 der Zeit geladen wurde. Obwohl ich mit dem Ergebnis zufrieden bin, würde ich gerne verstehen, was los ist.
EIN ANDERES UPDATE
Der Punkt scheint also zu sein, dass ich mit dieser Site keine dynamische Seite (im Sinne von WordPress) verwenden kann. Sie funktioniert nur mit einer benutzerdefinierten "statischen" Seite, auf der ich Inhalte über verschiedene Funktionen einfüge. Die normale Schleife macht das Home entweder sehr langsam (mit hohem Speicherlimit) oder einfach leer (niedriges Speicherlimit, Skript schlägt fehl).
Wie in dieser Frage vorgeschlagen , habe ich ein statisches Home erstellt, das mit einer benutzerdefinierten Seite verknüpft ist, und es funktioniert einwandfrei. Ich habe auch eine Blog-Seite erstellt (wieder mit einer benutzerdefinierten Vorlage), die ebenfalls einwandfrei funktioniert (wobei "gut" bedeutet, dass meine leere Testseite nur ein Wort und keinen Code enthält), es sei denn, ich gebe sie in admin -> als "Posts-Seite" an Einstellungen lesen. Mit anderen Worten, sobald WordPress eine dynamische Seite sieht (die die Hauptschleife enthalten soll), macht es etwas sehr Schweres, das viel RAM auffrisst.
Ich suche immer noch nach der Ursache dafür, kann es aber umgehen, aber ich würde wirklich gerne verstehen, wo das Problem liegt.
Bearbeiten: Kopfgeld hinzugefügt
Weitere Informationen: Ich habe versucht, alle Plugins zu deaktivieren. WordPress wurde auf die neueste Version aktualisiert.
WEITERE BEARBEITUNG: TABELLENINDEXE
wp_posts:
PRIMARY KEY (`ID`),
KEY `type_status_date` (`post_type`,`post_status`(1),`post_date`,`ID`),
KEY `post_status_date_gmt` (`post_status`(1),`post_date_gmt`),
KEY `post_date` (`post_date`),
KEY `post_date_gmt` (`post_date_gmt`),
KEY `post_parent` (`post_parent`),
KEY `post_name` (`post_name`),
KEY `post_status` (`post_status`),
KEY `post_author` (`post_author`),
FULLTEXT KEY `post_related` (`post_name`,`post_content`),
FULLTEXT KEY `post_content` (`post_content`,`post_title`),
wp_term_relationships:
PRIMARY KEY (`object_id`,`term_taxonomy_id`),
KEY `term_taxonomy_id` (`term_taxonomy_id`)
wp_term_taxonomy:
PRIMARY KEY (`term_taxonomy_id`),
UNIQUE KEY `term_id_taxonomy` (`term_id`,`taxonomy`),
KEY `taxonomy` (`taxonomy`)
quelle
http://example.com?debug=sql
Premature end of script headers: index.php
Antworten:
Ich möchte mich von den beiden vorhergehenden Kommentaren unterscheiden.
Die Verwendung einer statischen Homepage führt dazu, dass WP einen Index-Scan für den Primärschlüssel der Posts-Tabelle verwendet, während ein (ach so gelegentlicher) Index-Scan für post_date, status oder post_parent in der Posts-Tabelle verwendet wird.
Im Wesentlichen ist die Homepage aufgrund des schlechten Datenbankdesigns in WP absolut langsam. Das Schema enthält lächerliche mehrspaltige Indizes für die Taxonomietabellen, die MySQL einfach ignoriert, sobald Sie eine sinnvolle Anzahl von Posts haben. Die Tatsache, dass wir eine Tabelle zu oft für Taxonomien verwenden, hilft auch nicht weiter.
Fügen Sie in der Datenbank sicher Indizes hinzu für:
Es wird nicht perfekt sein, aber zumindest kann WP indexbasierte Pläne für verschachtelte Schleifen auf Ihrer Startseite verwenden ...
Oh, und ... wenn Sie auf Ihrer Startseite einen benutzerdefinierten Beitragstyp verwenden, müssen Sie außerdem Folgendes hinzufügen:
Andernfalls wird aufgrund der OR-Klauseln überhaupt kein Index für die Hauptabfrage verwendet.
quelle
Standardmäßig gibt es keinen Unterschied für die Leistung der Homepage. Es besteht jedoch die Möglichkeit, dass ein Plugin nur auf dieser Seite etwas Langsames tut.
Es gibt viele Plugins, um die WP-Leistung zu profilieren. Normalerweise verwende ich WP Tuner, aber es scheint für die neueste WP-Version defekt zu sein, daher kann ich keinen sofortigen Ersatz vorschlagen.
Am einfachsten ist es, eine Vorlage voller Zeit- / Speichermarkierungen zu packen.
Es ist grob, erlaubt aber oft, den Ort zu bestimmen, an dem eine Verlangsamung auftritt.
quelle
Nach fast 4 Jahren kam ich wieder darauf zurück und fand schließlich das Problem. Es stellte sich heraus, dass die Website viele Artikel enthielt, die ALLE als klebrig markiert waren. Aufgrund der unglaublich dummen Art und Weise, wie WordPress klebrige Posts markiert (ein serialisiertes Array in wp_options), dauerte die Hauptschleife der dynamischen Homepage unglaublich lange. Das Löschen des
sticky_posts
Feldes in der Tabelle hat das Problem behoben.quelle
Wenn das Laden der Homepage so lange dauert, haben Sie höchstwahrscheinlich ein Plugin oder eine Funktion im Design, die beim Rendern der Homepage eine Remote-Anfrage stellt.
Ich würde eine rekursive Suche in Ihrem wp-content-Verzeichnis nach Aufrufen von 'wp_remote_' durchführen, um nach Funktionen zu suchen, die dies verursachen könnten.
quelle
wp_head()
Aufruf-Aktions-Hooks, mit denen Plug-Ins sekundäre Funktionen aufrufen können. Aus diesem Grund schlug @prettyboymp eine Suche im gesamtenwp-content
Verzeichnis vor und @Jeremy Clarke empfahl, alle oben genannten Plug-Ins zu deaktivieren.Überprüfen Sie zunächst die Anforderungen von WOrdPress und die enthaltenen Bilder, Skripte und Stylesheets. Sie können die Abfragen mit den Plugin- Debug-Abfragen überprüfen und erhalten weitere Informationen zu Ihrer Installation und zu Fehlern mit den Plugin- Debug-Objekten .
quelle