TechBlogSD - Alles für WordPress und WEB-Entwicklung
WEB- und WordPress-Anleitungen, Neuigkeiten, Rezensionen zu Themes und Plugins

Langsames Laden der Seite mit WooCommerce beheben wc-ajax=get_refreshed_fragments

5

WooCommerce ist eines der beliebtesten Plugins, um Ihre WordPress- Site in einen Online-Shop zu verwandeln. Die meisten der beliebten Themes bieten mit Hilfe des WooCommerce-Plugins eine integrierte Store-Funktion. Auf einigen unserer Seiten verwenden wir auch WooCommerce. Als wir kürzlich eine Überprüfung der Seitengeschwindigkeit von GTmetrix und Pingdom durchgeführt haben, haben wir festgestellt, dass das Laden der Komponente "wc-ajax=get_refreshed_fragments" etwa eine Sekunde dauert. Nach der Analyse haben wir festgestellt, dass es in den meisten anderen Fällen sogar 5 bis 10 Sekunden dauert. Wenn Sie ein Problem mit der Seitengeschwindigkeit bei WooCommerce Ajax-Aufrufen haben, finden Sie hier die Lösungen, um das Problem für verschiedene Szenarien zu beheben.

Beheben Sie das WooCommerce AJAX-Problem

Wir haben die folgenden Themen zu WooCommerce wc-ajax=get_refreshed_fragments in diesem Artikel behandelt:

  1. Was ist wc-ajax=get_refreshed_fragments?
  2. Problem beim Laden der Seite bei Admin-Ajax-Aufrufen
  3. Wie behebe ich das langsame Laden von Seiten in WooCommerce mit Admin Ajax?
    1. Deaktivieren Sie nur die Fragmentierung des Einkaufswagens auf der Startseite Ihrer Website
    2. Nur Warenkorb-Fragmentierung auf Titelseite und Beiträgen deaktivieren
    3. Deaktivieren Sie alle WooCommerce-Stile und -Skripte auf allen Seiten außer den Shop-Seiten
  4. Verwenden des Plugins zum Stoppen des Ajax-Aufrufs des WooCommerce-Administrators
  5. Seitengeschwindigkeit testen
  6. Stoppen der WordPress-Heartbeat-API

1 Was ist wc-ajax=get_refreshed_fragments?

Es hat einige Zeit gedauert, bis wir verstanden haben, dass die aktualisierten Fragmente im Seitengeschwindigkeitsdiagramm vom WooCommerce-Plugin aufgerufen werden. Da unsere Site auf SiteGround Cloud VPS gehostet wurde, waren die Auswirkungen geringer und der WooCommerce Ajax-Aufruf dauerte etwa eine Sekunde. Wenn Sie auf einem Shared Hosting wie Bluehost hosten, können Sie eine längere Verzögerung beim Laden der Seite zwischen 3 und 10 Sekunden feststellen.

Unten ist der Screenshot von Pingdom, der die lange Wartezeit für das Laden von „wc-ajax=get_refreshed_fragments” auf der Seite zeigt. Sie können auch sehen, dass dieses Skript im Google PageSpeed ​​Insights-Tool unter einem Rendering-Blockierungsproblem aufgeführt wird und es unter dem Wasserfalldiagramm in GTmetrix findet.

Problem beim Laden der WooCommerce-Ajax-Seite

Grundsätzlich versucht WooCommerce, die Warenkorbdetails durch den Aufruf des Skripts zu sammeln und dauert lange, bis die Aufgabe abgeschlossen ist. Das Plugin ruft die nicht zwischengespeicherten Warenkorbdetails auf jeder Seite ab, um die neuesten Warenkorbartikel anzuzeigen, indem es den Administrator Ajax aufruft. Sie können das Skript in etwa wie folgt auf jeder Seite Ihrer Website sehen:

<script type='text/javascript'> /* <![CDATA[ */ var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View Cart","cart_url":"http://localhost/shop/cart/","is_cart":"","cart_redirect_after_add":"yes"}; /* ]]> */ </script>

Dies ist in der localhost-Umgebung und Sie sollten den Code mit Ihrer eigenen URL sehen.

Langsames Laden der Seite mit WooCommerce beheben wc-ajax=get_refreshed_fragments

WooCommerce Ajax-Fragmente auf der Seitenquelle

2 Admin-Ajax-Aufrufe und Seitenladen

WooCommerce verwendet diesen Ajax-Aufruf des Administrators für die Warenkorbfragmentierung, um die Artikel und die Gesamtsumme im Warenkorb zu aktualisieren, ohne die Seite zu aktualisieren. Das Aufrufen von Admin Ajax auf jeder Seite verzögert die Ladezeit Ihrer Seite erheblich und verbraucht auch hohe Serverressourcen. Das andere Problem ist, dass das Plugin diese Aktion sogar auf einer Seite ausführt, auf der es keine Warenkorb- oder produktbezogenen Details gibt.

Der obige Screenshot zeigt, dass das Problem auf der Seite „Über uns” besteht, auf der keine WooCommerce-Komponenten verfügbar sind. Das Entfernen des Einkaufswagens auf der Seite trägt also nicht zur Verbesserung der Seitenladegeschwindigkeit bei. Was wir brauchen, ist die Warenkorbaktualisierung zu deaktivieren, wenn keine Warenkörbe oder Produkte angezeigt werden.


Verwandter WooCommerce-Artikel:

3 Wie behebt man das Problem mit wc-ajax=get_refreshed_fragments?

Das Problem muss behoben werden, indem Sie das Skript aus der Warteschlange entfernen, indem Sie die Datei functions.php Ihres Themes ändern. Sie können die functions.php über das WordPress-Admin-Panel oder über FTP ändern. Anstatt die Datei functions.php zu ändern, erstellen Sie ein Child-Theme und fügen Sie dem Child-Theme zusätzliche Funktionen hinzu. Dies hilft Ihnen, die Änderungen beizubehalten, wenn Sie das Design aktualisieren. Es gibt drei Optionen, um das WooCommerce Ajax-Warenkorbfragmentierungsskript aus der Warteschlange zu entfernen.

  • Deaktivieren Sie nur die Fragmentierung des Einkaufswagens auf der Startseite Ihrer Website
  • Nur Warenkorb-Fragmentierung auf Titelseite und Beiträgen deaktivieren
  • Deaktivieren Sie alle WooCommerce-Stile und -Skripte auf allen Seiten außer den Shop-Seiten.

Lassen Sie uns alle drei Optionen im Detail besprechen, tun Sie nur eine Sache, die für Sie erforderlich ist.

3.1. Warenkorb-Fragmentierung auf der Startseite deaktivieren

Navigieren Sie im WordPress-Admin-Panel zu „Darstellung > Editor” und suchen Sie die Datei functions.php. Fügen Sie am Ende der Datei den folgenden Code hinzu.

/** Disable Ajax Call from WooCommerce */ add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11); function dequeue_woocommerce_cart_fragments() { if (is_front_page()) wp_dequeue_script('wc-cart-fragments'); }

Es sollte wie unten im Editor aussehen. Nachdem Sie den Code eingefügt haben, klicken Sie auf "Datei aktualisieren", um Ihre Änderungen zu speichern.

Langsames Laden der Seite mit WooCommerce beheben wc-ajax=get_refreshed_fragments

Ändern von Theme-Funktionen PHP-Datei

Wenn Sie FTP verwenden möchten, melden Sie sich mit dem FTP-Konto bei Ihrem Server an. Gehen Sie zu „/wp-content/your-theme/” und suchen Sie die Datei „functions.php”. Bearbeiten und fügen Sie den obigen Code am Ende der Datei hinzu und laden Sie die geänderte Datei wieder auf den Server hoch.

Sobald die Datei aktualisiert wurde, navigieren Sie zum Menü „WooCommerce > Einstellungen” und gehen Sie zum Abschnitt „Anzeige” auf der Registerkarte „Produkte”. Aktivieren Sie das Kontrollkästchen bei der Option „Nach erfolgreichem Hinzufügen zur Warenkorbseite weiterleiten”.

Langsames Laden der Seite mit WooCommerce beheben wc-ajax=get_refreshed_fragments

Umleitung zur Warenkorbseite aktivieren

Dies hilft dem Kunden, zur Hauptseite des Warenkorbs zu gelangen, anstatt lange zu warten, nachdem der Artikel in den Warenkorb gelegt wurde. Andernfalls werden in Ihrem Einkaufswagen möglicherweise nicht die aktualisierten Details angezeigt, obwohl der Artikel hinzugefügt wurde, wenn Sie sich auf derselben Seite befinden, auf der das Skript zur Fragmentierung des Einkaufswagens deaktiviert ist.

3.2. Deaktivieren Sie die Fragmentierung des Einkaufswagens auf der Startseite und in den Beiträgen

Der obige Code deaktiviert das Warenkorbfragment-Skript nur auf der statischen Startseite. Wenn Sie das Skript für alle Beiträge deaktivieren möchten, versuchen Sie, den folgenden Code in die Datei function.php Ihres Themes einzufügen.

/** Disable Ajax Call from WooCommerce on front page and posts*/ add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11); function dequeue_woocommerce_cart_fragments() { if (is_front_page() || is_single()) wp_dequeue_script('wc-cart-fragments'); }

3.3. Deaktivieren aller WooCommerce-Stile und -Skripte auf der gesamten Website

WooCommerce ist ein ressourcenintensives Plugin, das Ihre Serverressourcen zum Laden aller relevanten Stylesheets und Skripte benötigt. Wenn Sie nur wenige Produkte mit Hunderttausenden von Blog-Posts haben, ist es sinnvoll, alle WooCommerce-relevanten Inhalte in den Blog-Posts aus der Warteschlange zu entfernen oder zu deaktivieren. Mit anderen Worten, Sie können WooCommerce-Skripte nur auf Shop-relevanten Seiten zulassen, damit alle anderen Seiten schneller geladen werden.

Fügen Sie den folgenden Code in Ihre Datei functions.php basierend auf dem Github-Gist ein. Der Code überprüft zuerst, ob das WooCommerce-Plugin auf Ihrer Website vorhanden ist, und deaktiviert dann die Stile und Skripte auf allen Seiten außer Produkt-, Warenkorb- und Checkout-Seiten. Dies wird dazu beitragen, „wc-ajax=get_refreshed_fragments”-Aufrufe von allen Beiträgen/Seiten mit Ausnahme von WooCommerce-bezogenen Seiten zu entfernen.

/** Disable All WooCommerce Styles and Scripts Except Shop Pages*/ add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_styles_scripts', 99 ); function dequeue_woocommerce_styles_scripts() { if (function_exists( 'is_woocommerce')) { if (! is_woocommerce() &&! is_cart() &&! is_checkout()) { # Styles wp_dequeue_style( 'woocommerce-general' ); wp_dequeue_style( 'woocommerce-layout' ); wp_dequeue_style( 'woocommerce-smallscreen' ); wp_dequeue_style( 'woocommerce_frontend_styles' ); wp_dequeue_style( 'woocommerce_fancybox_styles' ); wp_dequeue_style( 'woocommerce_chosen_styles' ); wp_dequeue_style( 'woocommerce_prettyPhoto_css' ); # Scripts wp_dequeue_script( 'wc_price_slider' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-add-to-cart' ); wp_dequeue_script( 'wc-cart-fragments' ); wp_dequeue_script( 'wc-checkout' ); wp_dequeue_script( 'wc-add-to-cart-variation' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-cart' ); wp_dequeue_script( 'wc-chosen' ); wp_dequeue_script( 'woocommerce' ); wp_dequeue_script( 'prettyPhoto' ); wp_dequeue_script( 'prettyPhoto-init' ); wp_dequeue_script( 'jquery-blockui' ); wp_dequeue_script( 'jquery-placeholder' ); wp_dequeue_script( 'fancybox' ); wp_dequeue_script( 'jqueryui' ); } } }

Warnung: Denken Sie daran, nur einen der Codeblöcke aus den drei oben genannten Optionen hinzuzufügen. Fügen Sie nicht mehrere oder alle Codes in Ihre Datei functions.php ein. Wenn Sie die Skripte seitlich deaktivieren, deaktivieren Sie auch die Option "Ajax-Schaltflächen zum Warenkorb hinzufügen in Archiven aktivieren", die im Abschnitt "Anzeige" des Menüs "WooCommerce > Einstellungen" verfügbar ist.

4 Verwenden von Plugins zum Stoppen von WooCommerce-Admin-Ajax-Aufrufen

Wenn Sie nicht mit dem Ändern der Datei des Themas oder dem Erstellen von untergeordneten Themen vertraut sind, gibt es Plugins, die die Arbeit für Sie erledigen. Die erste Möglichkeit besteht darin, das Premium-Plugin WP Rocket zu verwenden. Sie können WP Rocket kaufen, das Plugin über Ihr WordPress-Admin-Panel installieren und aktivieren. Dieses Plugin hat keine speziellen Einstellungen für WooCommerce. Durch einfaches Aktivieren des Plugins wird die Fragmentierung des WooCommerce-Warenkorbs auf allen Seiten Ihrer Website deaktiviert. Es funktioniert mit der Logik, zu überprüfen, ob Ihre Seite Ajax-Fragmentaufrufe im Quellcode enthält.

Wenn ja, wird beim Laden der Seite überprüft, ob der Warenkorb leer ist. Wenn diese beiden Bedingungen erfüllt sind, wird WP Rocket die Seite vorübergehend zwischenspeichern und beim nächsten Laden der Seite bereitstellen. Wenn Sie ein Problem feststellen, können Sie das Caching von Ajax-Fragmenten mit dem Hilfs-Plugin deaktivieren.

Plugins wie W3 Total Cache bieten auch Fragment-Cache als Premium-Erweiterung. Sie müssen jedoch ein Jahresabonnement von 99 US-Dollar bezahlen, um Premium-Funktionen zu erhalten. Stattdessen kostet WP Rocket bei einfacher Einrichtung 49 US-Dollar pro Jahr und Sie können auch 10% Rabatt erhalten, indem Sie den Newsletter abonnieren.

5 Testen der Seitengeschwindigkeit

Wenn Sie den Code manuell hinzugefügt haben, stellen Sie sicher, dass Sie den Cache Ihres Caching-Plugins und das Lack-Caching auf dem Server löschen, falls verfügbar. Löschen Sie auf ähnliche Weise alle Caching-Ebenen, wenn Sie das WP Rocket-Plugin installiert haben. Überprüfen Sie danach in Google PageSpeed ​​Insights und Sie sollten das Skript "wc-ajax=get_refreshed_fragments" nicht im Abschnitt "Renderblocking JavaScript" sehen. Sie können auch auf Mobilgeräten und Desktops problemlos 100 Punkte erzielen, wenn die Sperrzeit 0 ms beträgt.

Langsames Laden der Seite mit WooCommerce beheben wc-ajax=get_refreshed_fragments

Stile und Skripte von WooCommerce deaktivieren

Auch auf Pingdom sollte das WooCommerce-Skript, das „wc-ajax=get_refreshed_fragments” aufruft, im Abschnitt „Dateianfragen” nicht sichtbar sein. Ihr Page Speed ​​Score sollte insbesondere nach dem Deaktivieren des WooCommerce Ajax-Skripts erhöht werden.

6 Stoppen der WordPress Heartbeat API

Das WooCommerce-Plugin fügt viele attraktive Dashboard-Widgets hinzu, die Live-Verkäufe und Statistiken anzeigen. Das kostet Sie jedoch viel Geld, wenn Sie die Ladegeschwindigkeit Ihrer Website verringern. Die Dashboard-Widgets aktualisieren den Inhalt dynamisch mithilfe von Admin-Ajax-Aufrufen, ähnlich der Warenkorbfragmentierung in WooCommerce. Dies geschieht mit Hilfe der Standard-WordPress-API namens Heartbeat-API.

Im Allgemeinen empfehlen wir nicht, diese dynamischen Widgets auf dem Dashboard zu haben. Sie können einfach die admin-ajax-Aufrufe oder die WordPress-Heartbeat-API deaktivieren, um die Serverlast zu reduzieren und die Seitenladegeschwindigkeit Ihrer WordPress-Site zu verbessern. Plugins wie WP Rocket können helfen, die Heartbeat-API in Ihrem Admin-Panel zu deaktivieren.

Letzte Worte

WooCommerce ist eine der einfachen Möglichkeiten, Ihren Online-Shop in WordPress zu erstellen. Online-Shops benötigen jedoch bestimmte Grundfunktionen wie das dynamische Warenkorb-Update. Unserer Erfahrung nach verkaufen 90 % der WooCommerce-Nutzer einfache digitale Waren. Ihr Shop ist lediglich ein Add-On für den großen Blog oder die Content-Site. In diesem Fall empfehlen wir dringend, die Ajax-Aufrufe des Administrators zu deaktivieren, damit alle anderen Seiten der Website schneller geladen werden, ohne die Benutzererfahrung zu beeinträchtigen.

Wenn Sie über ein vollwertiges Geschäft verfügen, benötigen Sie die Warenkorbfragmentierungsfunktion, um die Warenkorbartikel dynamisch zu aktualisieren, ohne die Seite zu aktualisieren. Stellen Sie in einem solchen Fall sicher, dass Sie einen hochwertigen Hosting-Server zusammen mit Caching-Plugins wie WP Rocket oder W3 Total Cache haben, die eine Premium-Option zum Caching von Seitenfragmenten zur Verbesserung der Seitengeschwindigkeit bieten.

Aufnahmequelle: webnots.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. AnnehmenWeiterlesen