TechBlogSD - Allt för WordPress- och WEB -utveckling
WEB- och WordPress - instruktioner, nyheter, recensioner av teman och plugins

Fixa långsam sidladdning med WooCommerce wc-ajax = get_refreshed_fragments

4

WooCommerce är en av de populära plugins för att göra din WordPress -webbplats till en onlinebutik. De flesta av de populära teman erbjuder integrerad butiksfunktion med hjälp av WooCommerce -plugin. Vi använder också WooCommerce på några av våra webbplatser. Nyligen när vi gjorde en sidhastighetskontroll på GTmetrix och pingdom fann vi att komponenten "wc-ajax = get_refreshed_fragments" tog ungefär en sekund att ladda. Efter analyser fann vi att det i de flesta andra fall tar till och med 5 till 10 sekunder för sidan som ska laddas. Om du har problem med sidhastighet med WooCommerce Ajax -samtal är det här lösningarna för att åtgärda problemet för olika scenarier.

Åtgärda WooCommerce AJAX -problem

Vi har täckt följande ämnen om WooCommerce wc-ajax = get_refreshed_fragments i den här artikeln:

  1. Vad är wc-ajax = get_refreshed_fragments?
  2. Problem med sidladdning med admin -Ajax -samtal
  3. Hur fixar jag långsam sidladdning i WooCommerce med admin Ajax?
    1. Inaktivera endast vagnfragmentering på din webbplats förstasida
    2. Inaktivera endast vagnfragmentering på förstasidan och inläggen
    3. Inaktivera alla WooCommerce -stilar och skript på alla sidor utom butiksidor
  4. Använd plugin för att stoppa WooCommerce admin Ajax -samtal
  5. Testar sidhastighet
  6. Stoppar WordPress heartbeat API

1 Vad är wc-ajax = get_refreshed_fragments?

Det tog någon gång för oss att förstå att de uppdaterade fragmenten i sidhastighetstabellen kallas från WooCommerce -plugin. Eftersom vår webbplats var värd på SiteGround Cloud VPS var effekten mindre och WooCommerce Ajax -samtalet tog ungefär en sekund. Om du är värd för en delad värd som Bluehost kan du märka längre fördröjning av sidläsningen någonstans från 3 till 10 sekunder.

Nedan är skärmdumpen från pingdom som visar den långa väntetiden för att ladda "wc-ajax = get_refreshed_fragments" på sidan. Du kan också se att detta skript kommer att listas under ett problem med blockering av render i Google PageSpeed ​​Insights -verktyget och hitta det under vattenfallstabellen i GTmetrix.

WooCommerce Ajax problem med sidladdning

I grund och botten försöker WooCommerce att samla in kundvagnens detaljer genom att ringa manuset och det tar lång tid att slutföra uppgiften. Insticksprogrammet får information om den okända vagnen på varje sida för att visa de senaste vagnartiklarna genom att ringa administratören Ajax. Du kan se skriptet ungefär som nedan på varje sida på din webbplats:

<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>

Detta finns på localhost -miljön och du bör se koden med din egen URL.

Fixa långsam sidladdning med WooCommerce wc-ajax = get_refreshed_fragments

WooCommerce Ajax -fragment på sidkälla

2 Admin Ajax -samtal och sidläsning

WooCommerce använder det här Ajax -samtalet för vagnfragmentering för att uppdatera artiklarna och summan i vagnen utan att uppdatera sidan. Att ringa till admin Ajax på varje sida kommer att försena sidans laddningstid avsevärt och också förbrukar höga serverresurser. Den andra frågan är att pluginet gör den här åtgärden även på en sida där det inte finns någon kundvagn eller produktrelaterade detaljer.

Ovanstående skärmdump visar att problemet finns på sidan "Om oss" där det inte finns några WooCommerce -komponenter tillgängliga. Så att ta bort kundvagnen på sidan hjälper inte till att förbättra sidhastigheten. Vad vi behöver är att inaktivera vagnuppdateringen där det inte visas några kundvagnar eller produkter.


Relaterad WooCommerce -artikel:

3 Hur åtgärdar du problemet med wc-ajax = get_refreshed_fragments?

Problemet måste åtgärdas genom att ta bort manuset genom att ändra ditt temas funktioner.php -fil. Du kan ändra functions.php via WordPress -adminpanelen eller använda FTP. I stället för att ändra filen functions.php kan du skapa ett barns tema och lägga till ytterligare funktioner i barnetema. Detta hjälper dig att behålla ändringarna när du uppdaterar temat. Det finns tre alternativ för att avlägsna WooCommerce Ajax vagnfragmenteringsskript.

  • Inaktivera endast vagnfragmentering på din webbplats förstasida
  • Inaktivera endast vagnfragmentering på förstasidan och inläggen
  • Inaktivera alla WooCommerce -stilar och skript på alla sidor utom butiksidor.

Låt oss diskutera alla tre alternativen i detalj, gör bara en sak som krävs för dig.

3.1. Inaktivera vagnfragmentering på förstasidan

I WordPress adminpanel navigerar du till "Utseende> Editor" och letar upp filen functions.php. Lägg till följande kod i slutet av filen.

/** 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'); }

Det ska se ut nedan på redigeraren, när du klistrat in koden klickar du på "Uppdatera fil" för att spara dina ändringar.

Fixa långsam sidladdning med WooCommerce wc-ajax = get_refreshed_fragments

Ändra temafunktioner PHP -fil

Om du vill använda FTP loggar du in på din server med ett FTP -konto. Gå till "/wp-content/your-theme/" och hitta filen "functions.php". Redigera och lägg till ovanstående kod i slutet av filen och ladda upp den modifierade filen tillbaka till servern.

När filen har uppdaterats navigerar du till "WooCommerce> Inställningar" -menyn och går till avsnittet "Display" under fliken "Produkter". Aktivera kryssrutan mot alternativet "Omdirigera till kundvagnens sida efter lyckat tillägg".

Fixa långsam sidladdning med WooCommerce wc-ajax = get_refreshed_fragments

Aktivera omdirigering till varukorgssidan

Detta hjälper kunden att gå till huvudvagnens sida istället för att vänta länge efter att varan har lagts till i kundvagnen. Annars, om varan läggs till, kanske din kundvagn inte visar de uppdaterade detaljerna när du är på samma sida som vagnfragmenteringsskriptet är inaktiverat.

3.2. Inaktivera vagnfragmentering på förstasidan och inläggen

Koden ovan inaktiverar endast skriptet för vagnfragmentet på den statiska framsidan. Om du vill inaktivera skriptet på alla inlägg kan du försöka lägga till koden nedan i ditt temas function.php -fil.

/** 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. Inaktivera alla WooCommerce -stilar och skript Site Wide

WooCommerce är ett resurskrävande plugin som kan ta dina serverresurser för att ladda alla relevanta formatmallar och skript. Om du har få produkter med hundratusentals blogginlägg är det vettigt att ta bort eller inaktivera alla WooCommerce -relevanta saker på blogginläggen. Med andra ord kan du bara tillåta WooCommerce -skript på butiksrelevanta sidor så att alla andra sidor laddas snabbare.

Lägg till koden nedan i din functions.php -fil baserat på Github -kärnan. Koden kontrollerar först om WooCommerce -plugin finns på din webbplats och inaktiverar sedan stilar och skript på alla sidor utom produkt-, kundvagn- och kassasidor. Detta hjälper till att ta bort "wc-ajax = get_refreshed_fragments" -samtal från alla inlägg/sidor utom WooCommerce-relaterade sidor.

/** 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' ); } } }

Varning: Kom ihåg att bara lägga till ett av kodblocket från ovanstående tre alternativ. Lägg inte till flera eller alla koder i din functions.php -fil. När du inaktiverar skriptsidan bred, inaktivera också alternativet "Aktivera Ajax -knappar för att lägga till i kundvagn i arkiv" som finns tillgängligt under "Display" -menyn i "WooCommerce> Inställningar" -menyn.

4 Använda plugins för att stoppa WooCommerce Admin Ajax -samtal

Om du inte är bekant med att ändra temafilen eller skapa ett barns tema finns det plugins för att göra jobbet åt dig. Det första alternativet är att använda premium WP Rocket -plugin. Du kan köpa WP Rocket, installera och aktivera tillägget från din WordPress -administratörspanel. Denna plugin har inga speciella inställningar för WooCommerce. Genom att bara aktivera plugin inaktiveras WooCommerce vagnfragmentering på alla sidor på din webbplats. Det fungerar med logiken för att kontrollera om din sida innehåller Ajax -fragmentanrop i källkoden.

Om ja, kontrollerar det att vagnen är tom när sidan laddas. När båda dessa villkor är uppfyllda kommer WP Rocket att cacha sidan i övergående och visa när sidan laddas nästa gång. Om du upptäcker något problem kan du använda hjälppluggen för att inaktivera cachning av Ajax -fragment.

Plugins som W3 Total Cache erbjuder också fragmentcache som en premiumtillägg. Du måste dock betala $ 99 per år för att få premiumfunktioner. Istället kostar WP Rocket $ 49 per år med enkel installation och du kan också få 10% rabatt genom att prenumerera på deras nyhetsbrev.

5 Testa sidhastighet

Om du har lagt till koden manuellt, se till att rensa cacheminnet för ditt caching -plugin och rensa cachning av lack på servern om det finns tillgängligt. Rensa på samma sätt alla nivåer av cachning om du har installerat WP Rocket -plugin. Efter det, kolla in Google PageSpeed ​​Insights och du bör inte se skriptet "wc-ajax = get_refreshed_fragments" under JavaScript-avsnitt som blockerar renderingen. Du kan också enkelt få 100 poäng i mobil och stationär dator när blockeringstiden är 0 ms.

Fixa långsam sidladdning med WooCommerce wc-ajax = get_refreshed_fragments

Inaktivera stilar och skript för WooCommerce

Även på pingdom bör WooCommerce-skript som kallar "wc-ajax = get_refreshed_fragments" inte vara synligt under avsnittet "Filförfrågningar". Din sidhastighetspoäng bör ökas särskilt efter att WooCommerce Ajax -skriptet har inaktiverats.

6 Stoppa WordPress Heartbeat API

WooCommerce -plugin lägger till många attraktiva instrumentpanelwidgets som visar liveförsäljning och statistik. Det kommer dock att kosta dig högt genom att dra webbplatsens laddningshastighet. Instrumentpanelens widgets uppdaterar innehållet dynamiskt med hjälp av admin Ajax -samtal som liknar vagnfragmentering i WooCommerce. Detta görs med hjälp av standard WordPress API som kallas heartbeat API.

Generellt rekommenderar vi inte att ha de dynamiska widgetarna på instrumentpanelen. Du kan helt enkelt inaktivera admin-ajax-samtal eller WordPress heartbeat API för att minska serverbelastningen och förbättra sidhastigheten för din WordPress-webbplats. Insticksprogram som WP Rocket kan hjälpa till att inaktivera heartbeat API från din adminpanel.

Slutliga ord

WooCommerce är ett av de enkla sätten att bygga din webbutik i WordPress. Men onlinebutiker behöver vissa grundläggande funktioner som dynamisk vagnuppdatering. Enligt vår erfarenhet är det vi har sett att 90% av WooCommerce -användare säljer enkla digitala varor. Deras butik är bara ett tillägg till den stora bloggen eller innehållssajten. I det här fallet rekommenderar vi starkt att inaktivera admin Ajax -samtal så att alla andra sidor på webbplatsen laddas snabbare utan att det påverkar användarupplevelsen.

Om du har en fullvärdig butik behöver du funktionen för vagnfragmentering för att dynamiskt uppdatera vagnartiklarna utan att uppdatera sidan. Se i så fall till att ha en värdserver av hög kvalitet tillsammans med caching -plugins som WP Rocket eller W3 Total Cache som har ett utmärkt alternativ för cachning av sidfragment för att förbättra sidhastigheten.

Inspelningskälla: webnots.com
Leave A Reply

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterarFler detaljer