Ajax ist eine JavaScript-basierte Webtechnologie, die dir hilft, dynamische und interaktive Webseiten zu erstellen. WordPress nutzt Ajax, um viele seiner Kernfunktionen im Adminbereich zu nutzen, wie zum Beispiel das automatische Speichern von Beiträgen, die Verwaltung von Benutzersitzungen und Benachrichtigungen.

Standardmäßig leitet WordPress alle Ajax-Aufrufe über die admin-ajax.php – Datei, die sich im Verzeichnis /wp-admin der Webseite befindet.

Zahlreiche gleichzeitige Ajax-Anfragen können zu einer hohen admin-ajax.php – Nutzung führen, was den Server und die Webseite erheblich verlangsamt. Das ist eines der häufigsten Probleme vieler nicht optimierter WordPress-Seiten. Typischerweise macht es sich durch eine langsame Webseite oder einen HTTP-5xx-Fehler (meistens 504 oder 502 Fehler) bemerkbar.

In diesem Artikel erfährst du mehr über die admin-ajax.php – Datei von WordPress, wie sie funktioniert, ihre Vor- und Nachteile und wie du das Problem der hohen admin-ajax.php – Nutzung diagnostizieren und beheben kannst.

Bist du bereit loszulegen? Los geht’s!

Was ist die admin-ajax.php Datei?

Die admin-ajax.php – Datei enthält den gesamten Code für das Routing von Ajax-Anfragen bei WordPress. Ihr Hauptzweck ist es, eine Verbindung zwischen dem Client und dem Server herzustellen, welcher Ajax benutzt. WordPress verwendet sie, um den Inhalt der Seite zu aktualisieren ohne sie neu zu laden, und macht sie so dynamisch und interaktiv für die Benutzer.

Ein grober Überblick, wie Admin Ajax auf WordPress funktioniert
Ein grober Überblick, wie Admin Ajax auf WordPress funktioniert

Da der WordPress-Kern Ajax bereits für die verschiedenen Backend-Funktionen verwendet, könnt ihr die gleichen Funktionen auch für die Verwendung von Ajax auf WordPress nutzen. Alles was du tun musst, ist eine Aktion zu erfassen, sie auf die admin-ajax.php – Datei deiner Seite zu verweisen und zu definieren, wie du den Wert zurückgeben haben willst. Du kannst es so einstellen, dass es HTML, JSON oder sogar XML ausgibt.

admin-ajax.php - Datei in WordPress
admin-ajax.php – Datei in WordPress

Laut WordPress Trac erschien die admin-ajax.php – Datei zuerst in WordPress 2.1. In der WordPress-Entwicklergemeinschaft wird sie auch als Ajax Admin bezeichnet.

Überprüfen der Ajax-Nutzung im MyKinsta-Dashboard
Überprüfen der Ajax-Nutzung im MyKinsta-Dashboard

Die obige Tabelle zeigt nur die Anzahl der admin-ajax.php – Anfragen, jedoch nicht, woher sie kommen könnten. Es ist eine tolle Möglichkeit zu sehen, wann die Ausschläge auftreten. Du kannst sie mit anderen Techniken kombinieren, die in diesem Beitrag erwähnt werden, um die Hauptursache einzugrenzen.

Überprüfung der Anzahl der admin-ajax.php - Anfragen in den Chrome DevTools
Überprüfung der Anzahl der admin-ajax.php – Anfragen in den Chrome DevTools

Du kannst auch die Chrome DevTools benutzen, um zu sehen, wie viele Anfragen an admin-ajax.php gesendet werden. Du kannst auch im Timings-Tab unter der Network-Sektion nachsehen, wie lange es dauert, diese Anfragen zu bearbeiten.

Um den genauen Grund für die hohe admin-ajax.php – Nutzung herauszufinden, gibt es im Wesentlichen zwei Ursachen: eine durch das Frontend und die andere durch das Backend. Wir werden beide weiter unten besprechen.

Wie man den Fehler der hohen admin-ajax.php-Nutzung auf WordPress behebt

Plugins von Drittanbietern sind einer der häufigsten Gründe für eine hohe Admin-ajax.php-Nutzung. Typischerweise wird dieses Problem auf dem Frontend der Seite sichtbar und taucht häufig in Geschwindigkeitstestberichten auf.

Aber nicht nur Plugins sind hier als Themes schuld, auch der WordPress-Kern, der Webserver und eine DDoS-Attacke können der Grund für eine hohe Admin-Ajax-Nutzung sein.

Lasst sie uns genauer untersuchen.

Wie man den Ursprung der hohen admin-ajax.php-Nutzung für Plugins und Themes bestimmt

Ajax-angetriebene Plugins im WordPress.org-Repository
Ajax-angetriebene Plugins im WordPress.org-Repository

Ajax wird oft von WordPress-Entwicklern verwendet, um dynamische und interaktive Plugins und Themes zu erstellen. Einige beliebte Beispiele sind das Hinzufügen von Funktionen wie Live-Search, Produktfilter, endloses Scrollen, dynamischer Warenkorb und Chatbox.

Nur weil ein Plugin Ajax benutzt, heißt das nicht, dass es deine Seite verlangsamt.

Betrachten der admin-ajax.php Anfrage im WebPage-Testbericht
Betrachten der admin-ajax.php Anfrage im WebPage-Testbericht

Normalerweise wird Admin Ajax zum Ende der Seite geladen. Außerdem kannst du Ajax-Anfragen so einstellen, dass sie asynchron geladen werden, sodass sie wenig bis gar keinen Einfluss auf die wahrgenommene Leistung der Seite für den Benutzer haben können.

Wie ihr im obigen WebPage-Testbericht sehen könnt, lädt admin-ajax.php zum Ende der Anfragen-Warteschlange, aber es dauert immer noch 780 ms. Das ist eine Menge Zeit für nur eine Anfrage.

GTmetrix-Bericht, der auf einen ernstzunehmenden Admin-ajax. php-Nutzungsanstieg hinweist
GTmetrix-Bericht, der auf einen ernstzunehmenden Admin-ajax. php-Nutzungsanstieg hinweist

Wenn Entwickler Ajax nicht richtig in WordPress implementieren, kann das zu drastischen Performance-Problemen führen. Der obige GTmetrix-Bericht ist ein perfektes Beispiel für ein solches Verhalten.

Du kannst GTmetrix auch dazu benutzen, um in einzelne Post- und Antwortdaten einzusehen. Du kannst diese Funktion verwenden, um die Ursache für das Problem zu finden.

Geh dazu auf den Waterfall-Tab des GTmetrix-Berichts und klicke auf den Item POST admin-ajax.php. Du wirst drei Tabs für diese Anfrage sehen: Header, Post und Response.

POST admin-ajax.php Kopfzeilen-Daten der Anfrage
POST admin-ajax.php Kopfzeilen-Daten der Anfrage

Wenn du den Post- und Reponse-Tabs der Anfrage untersuchst, findest du einige Hinweise, um die Gründe hinter dem Leistungsproblem herauszufinden. Für diese Seite kannst du Hinweise im Response-Tab sehen.

POST admin-ajax.php Antwortdaten der Anfrage
POST admin-ajax.php Antwortdaten der Anfrage

Du kannst sehen, dass ein Teil der Antwort etwas mit einem Input-Tag mit id, welches auf „fusion-form-nonce-656“ festgelegt ist.

Eine schnelle Suche nach diesem Hinweis führt euch zur Webseite von ThemeFusion, den Erfindern des Avada-Themes. Daraus kannst du schließen, dass die Anfrage aus dem Theme oder einem der Plugins stammt, mit denen es gebündelt ist.

In einem solchen Fall musst du zuerst sicherstellen, dass das Avada-Theme und alle zugehörigen Plugins vollständig aktualisiert sind. Wenn das das Problem nicht behebt, kannst du versuchen, das Theme zu deaktivieren und sehen, ob das Problem dadurch behoben wird.

Im Gegensatz zum Deaktivieren eines Plugins ist das Deaktivieren eines Themes in den meisten Fällen nicht möglich. Versuche daher, das Theme zu optimieren, um Engpässe zu beseitigen. Du kannst dich auch an das Support-Team des Themes wenden, um zu sehen, ob sie eine bessere Lösung vorschlagen können.

Das Testen einer anderen langsamen Webseite in GTmetrix führte zu ähnlichen Problemen mit dem Visual Composer Page Builder und den Notification Bar Plugins.

Die Antwortdaten einer weiteren POST admin-ajax.php-Anfrage
Die Antwortdaten einer weiteren POST admin-ajax.php-Anfrage
POST admin-ajax.php-Anfrage der Postdaten
POST admin-ajax.php-Anfrage der Postdaten

Wenn du ein Problem mit dem Plugin nicht lösen kannst, hast du glücklicherweise viele alternative Plugins zur Verfügung, die ausprobieren kannst. Wenn es zum Beispiel um Seitenbauer geht, könntest du auch Beaver Builder oder Elementor ausprobieren.

Wie man den Ursprung von hohen admin-ajax.php bestimmt

Manchmal sind die Post- und Antwortdaten in den Geschwindigkeitstestberichten nicht so klar und eindeutig. Hier ist es nicht so einfach, den Ursprung der hohen admin-ajax.php-Nutzung zu finden. In solchen Fällen kannst du es immer noch nach bewährten Methoden machen.

Deaktiviere alle Plugins deiner Seite, leere den Cache deiner Seite (falls vorhanden) und führe dann erneut einen Geschwindigkeitstest durch. Wenn die admin-ajax.php noch vorhanden ist, dann ist der wahrscheinlichste Übeltäter das Theme. Wenn es aber nirgendwo zu finden ist, dann musst du jedes Plugin einzeln aktivieren und jedes Mal die Geschwindigkeitstests durchführen. Durch den Prozess der Beseitigung werdet ihr den Ursprung des Problems feststellen.

Tipp: Die Verwendung einer Staging-Umgebung (z.B. Kinsta’s Staging-Umgebung) ist eine gute Möglichkeit, Tests auf deiner Seite durchzuführen, ohne deine Live-Seite zu beeinträchtigen. Sobald du die Ursache ermittelt und das Problem in der Staging-Umgebung behoben hast, kannst du die Änderungen auf deine Live-Site übertragen.

Backend-Server-Probleme mit admin-ajax.php diagnostizieren

Der zweithäufigste Grund für eine hohe admin-ajax.php – Nutzung ist die WordPress Heartbeat API, die häufige Ajax-Aufrufe generiert, was zu einer hohen CPU-Auslastung des Servers führt. Typischerweise wird dies dadurch verursacht, dass viele Benutzer im WordPress-Backend-Dashboard eingeloggt sind. Daher wirst du das bei Geschwindigkeitstests nicht sehen.

Standardmäßig fragt die Heartbeat-API die admin-ajax.php – Datei alle 15 Sekunden ab, um Beiträge oder Seiten automatisch zu speichern. Wenn du einen Shared-Hosting-Server verwendest, dann hast du nicht viele Server-Ressourcen für deine Seite. Wenn du einen Beitrag oder eine Seite bearbeitest und den Tab für eine gewisse Zeit offen lässt, kann das eine Menge Admin-Ajax-Anfragen nach sich ziehen.

Wenn du zum Beispiel Beiträge schreibst oder bearbeitest, kann ein einzelner Benutzer allein 240 Anfragen in einer Stunde generieren!

Häufige Autosave-Admin-ajax.php-Anfragen
Häufige Autosave-Admin-ajax.php-Anfragen

Das sind viele Anfragen auf dem Backend mit nur einem User. Nun stell dir eine Seite vor, auf der mehrere Editoren gleichzeitig eingeloggt sind. Solch eine Seite kann Ajax-Anfragen schnell verarbeiten, was zu einer hohen CPU-Auslastung führt.

Das musste DARTDrones feststellen, als das Unternehmen seine WooCommerce-Seite auf den erwarteten Anstieg der Besucherzahlen nach einem Auftritt im Shark Tank vorbereitete.

Bevor die Seite von DARTDrones in der Fernsehshow ausgewählt wurde, erhielt sie an einem Tag über 4.100 admin-ajax.php-Aufrufe bei nur 2.000 eindeutigen Besuchern. Das ist ein schwaches Verhältnis von Aufrufen zu Besuchern.

Heavy admin-ajax.php usage on dartdrones.com
Heavy admin-ajax.php usage on dartdrones.com

Den Ermittlern fiel die Referrer-URL /wp-admin auf und sie fanden die Ursache heraus. Diese Anfragen kamen dadurch zustande, weil die Admins und Editoren von DARTDrones die Seite in Vorbereitung auf die Show häufig aktualisierten.

WordPress hat dieses Heartbeat-API-Problem teilweise schon vor langer Zeit behoben. Zum Beispiel kann man die Häufigkeit der Anfragen reduzieren, die von der Heartbeat API auf Hosts mit begrenzten Ressourcen generiert werden. Außerdem schaltet sie sich nach einer Stunde Inaktivität von Tastatur/Maus/Touch selbst ab.

Hoher Traffic durch eine DDoS-Attacke oder Spam-Bots

Das Überfordern deiner Seite mit einer DDoS-Attacke oder Spam-Bots kann auch zu einer hohen admin-ajax.php – Nutzung führen. Allerdings zielt eine solche Attacke nicht unbedingt auf zunehmende Admin-Ajax-Anfragen ab. Es ist nur Kollateralschaden.

Wenn deine Seite unter einem DDoS-Angriff steht, sollte deine Priorität sein, sie hinter einem robusten CDN/WAF wie Cloudflare oder Sucuri zu schützen. Jeder Host Plan bei Kinsta beinhaltet die kostenlose Cloudflare-Integration und das Kinsta CDN, mit denen du die Ressourcen deiner Website weitgehend entlasten kannst.

Um mehr darüber zu erfahren, wie du deine Webseiten vor bösartigen Angriffen wie diesen schützen kannst, lies in dieser ausführlichen Anleitung nach, wie du einen DDoS-Angriff stoppst.

Zusammenfassung

WordPress verwendet Ajax in seiner Heartbeat-API, um viele seiner Kernfunktionen zu implementieren. Es kann jedoch zu erhöhten Ladezeiten führen, wenn es nicht korrekt verwendet wird. Dies wird typischerweise durch eine hohe Frequenz von Anfragen an die admin-ajax.php  – Datei verursacht.

In diesem Artikel lernst du die verschiedenen Ursachen für eine hohe admin-ajax.php – Nutzung kennen, wie du diagnostizieren kannst, was für dieses Symptom verantwortlich ist, und wie du es beheben kannst. In den meisten Fällen sollte die Befolgung dieses Leitfadens dazu führen, dass deine Seite in kürzester Zeit wieder einwandfrei funktioniert.

In einigen Fällen ist jedoch ein Upgrade auf einen Server mit höheren Ressourcen die einzig gangbare Lösung. Besonders für anspruchsvolle Anwendungsfälle wie E-Commerce- und Mitgliederseiten. Wenn du eine solche Seite betreibst, solltest du ein Upgrade auf einen Managed WordPress Host in Erwägung ziehen, der mit solchen Leistungsproblemen vertraut ist.

Wenn du immer noch mit einer hohen admin-ajax.php – Nutzung auf deiner WordPress-Seite zu kämpfen hast, lass es uns in der Kommentar-Sektion wissen.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.