TechBlogSD - Alt for WordPress- og WEB -utvikling
WEB- og WordPress -instruksjoner, nyheter, anmeldelser av temaer og plugins

Løs langsom sideinnlasting med WooCommerce wc-ajax = get_refreshed_fragments

3

WooCommerce er en av de populære pluginene for å gjøre WordPress -nettstedet ditt til en nettbutikk. De fleste av de populære temaene tilbyr integrert butikkfunksjon ved hjelp av WooCommerce -plugin. Vi bruker også WooCommerce på noen av nettstedene våre. Nylig da vi gjorde en hastighetskontroll på GTmetrix og pingdom, fant vi at komponenten "wc-ajax = get_refreshed_fragments" tok omtrent et sekund å laste inn. Etter analyse fant vi ut at i de fleste andre tilfeller tar det til og med 5 til 10 sekunder for siden du skal laste inn. Hvis du har problemer med sidehastighet med WooCommerce Ajax -anrop, er det her løsningene for å fikse problemet for forskjellige scenarier.

Løs WooCommerce AJAX -problemet

Vi har dekket følgende emner om WooCommerce wc-ajax = get_refreshed_fragments i denne artikkelen:

  1. Hva er wc-ajax = get_refreshed_fragments?
  2. Problem med sidelastning med admin Ajax -anrop
  3. Hvordan fikse jeg sakte lasting av sider i WooCommerce med admin Ajax?
    1. Deaktiver bare vognfragmentering på forsiden av nettstedet ditt
    2. Deaktiver bare vognfragmentering på forsiden og innleggene
    3. Deaktiver alle WooCommerce -stiler og skript på alle sider unntatt butikksider
  4. Bruker plugin for å stoppe WooCommerce admin Ajax -anrop
  5. Tester sidehastigheten
  6. Stopper WordPress heartbeat API

1 Hva er wc-ajax = get_refreshed_fragments?

Det tok en stund før vi faktisk forsto de oppdaterte fragmentene i sidehastighetstabellen fra WooCommerce -plugin. Ettersom nettstedet vårt ble hostet på SiteGround Cloud VPS, var effekten mindre og WooCommerce Ajax -samtalen tok rundt et sekund. Hvis du er vert for en delt hosting som Bluehost, kan du merke lengre forsinkelse i sideinnlasting et sted fra 3 til 10 sekunder.

Nedenfor er skjermbildet fra pingdom som viser den lange ventetiden for å laste “wc-ajax = get_refreshed_fragments" på siden. Du kan også se at dette skriptet vil bli oppført under et problem med blokkering av gjengivelse i Google PageSpeed ​​Insights -verktøyet og finne det under fossediagrammet i GTmetrix.

Problem med WooCommerce Ajax -side

I utgangspunktet prøver WooCommerce å samle inn handlekurvdetaljene ved å ringe skriptet, og det tar lang tid å fullføre oppgaven. Programtillegget får informasjon om ikke -bufret handlekurv på hver side for å vise de nyeste handlekurven ved å ringe admin Ajax. Du kan se skriptet omtrent som nedenfor på hver side på nettstedet ditt:

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

Dette er på localhost -miljøet, og du bør se koden med din egen URL.

Løs langsom sideinnlasting med WooCommerce wc-ajax = get_refreshed_fragments

WooCommerce Ajax -fragmenter på sidekilde

2 Admin Ajax -anrop og sideinnlasting

WooCommerce bruker denne Ajax -samtalen for handlekurvfragmentering for å oppdatere varene og summen i handlekurven uten å oppdatere siden. Å ringe admin Ajax på hver side vil forsinke sidelastetiden betraktelig og også bruke høye serverressurser. Det andre problemet er at programtillegget gjør denne handlingen, selv på en side der det ikke er noen handlevogn eller produktrelaterte detaljer.

Skjermbildet ovenfor viser at problemet eksisterer på siden "Om oss" der det ikke er noen WooCommerce -komponenter tilgjengelig. Så å fjerne handlekurven på siden vil ikke hjelpe deg med å forbedre sidehastigheten. Det vi trenger er å deaktivere handlevognoppdateringen der det ikke vises noen handlekurver eller produkter.


Relatert WooCommerce -artikkel:

3 Hvordan fikse jeg problemet med wc-ajax = get_refreshed_fragments?

Problemet må løses ved å fjerne skriptet ved å endre temaets functions.php -fil. Du kan endre functions.php via WordPress admin panel eller bruke FTP. I stedet for å modifisere functions.php -filen, kan du lage et barnetema og legge til flere funksjoner i barnetemaet. Dette vil hjelpe deg med å beholde endringene når du oppdaterer temaet. Det er tre alternativer for å fjerne WooCommerce Ajax vognfragmenteringsskript.

  • Deaktiver bare vognfragmentering på forsiden av nettstedet ditt
  • Deaktiver bare vognfragmentering på forsiden og innleggene
  • Deaktiver alle WooCommerce -stiler og skript på alle sider unntatt butikksider.

La oss diskutere alle tre alternativene i detalj, gjør bare en ting som kreves for deg.

3.1. Deaktiver vognfragmentering på forsiden

I WordPress -administrasjonspanelet navigerer du til "Utseende> Editor" og finner filen functions.php. Legg til følgende kode på slutten 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 skal se ut som nedenfor på redaktøren. Når du har limt inn koden, klikker du på "Oppdater fil" for å lagre endringene.

Løs langsom sideinnlasting med WooCommerce wc-ajax = get_refreshed_fragments

Endre temafunksjoner PHP -fil

Hvis du vil bruke FTP, logger du deg på serveren din med FTP -konto. Gå til “/wp-content/your-theme/” og finn filen “functions.php”. Rediger og legg til koden ovenfor på slutten av filen, og last opp den endrede filen tilbake til serveren.

Når filen er oppdatert, navigerer du til "WooCommerce> Innstillinger" -menyen og går til "Display" -delen under "Produkter" -fanen. Aktiver avmerkingsboksen mot alternativet "Omdiriger til handlekurven etter vellykket tillegg".

Løs langsom sideinnlasting med WooCommerce wc-ajax = get_refreshed_fragments

Aktiver viderekobling til handlevogn

Dette vil hjelpe kunden til å gå til hovedvognssiden i stedet for å vente lenge etter at varen er lagt i handlekurven. Ellers, selv om varen er lagt til, er det ikke sikkert at handlekurven viser de oppdaterte detaljene når du er på samme side som handlingsfragmenteringsskriptet er deaktivert.

3.2. Deaktiver vognfragmentering på forsiden og innleggene

Koden ovenfor vil bare deaktivere skriptet for handlevognfragmentet på den statiske forsiden. Hvis du vil deaktivere skriptet på alle innlegg, kan du prøve å legge til koden nedenfor i temaets 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. Deaktivering av alle WooCommerce -stiler og skript -sider

WooCommerce er en ressurskrevende plugin som kan ta serverressursene dine for å laste inn alle relevante stilark og skript. Hvis du har få produkter med hundretusenvis av blogginnlegg, er det fornuftig å fjerne eller deaktivere alle WooCommerce -relevante ting på blogginnleggene. Med andre ord kan du bare tillate WooCommerce -skript på butikkrelevante sider, slik at alle andre sider lastes inn raskere.

Legg til koden nedenfor i din functions.php -fil basert på Github -essensen. Koden vil først kontrollere om WooCommerce -plugin finnes på nettstedet ditt, og deretter deaktivere stiler og skript på alle sider unntatt produkt-, handlekurv- og kassasider. Dette vil bidra til å fjerne "wc-ajax = get_refreshed_fragments" -anrop fra alle innlegg/sider unntatt WooCommerce-relaterte sider.

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

Advarsel: Husk å legge til bare én av kodeblokken fra de tre alternativene ovenfor. Ikke legg til flere eller alle koder i din functions.php -fil. Når du deaktiverer skriptene bredt, deaktiverer du også alternativet "Aktiver Ajax -knapper for å legge til i handlekurven på arkiver" tilgjengelig under "Display" -delen av "WooCommerce> Innstillinger" -menyen.

4 Bruke programtillegg for å stoppe WooCommerce Admin Ajax -samtaler

Hvis du ikke er kjent med å endre temafilen eller lage barnetema, er det plugins for å gjøre jobben for deg. Det første alternativet er å bruke premium WP Rocket -plugin. Du kan kjøpe WP Rocket, installere og aktivere programtillegget fra WordPress -administrasjonspanelet. Denne pluginen har ingen spesielle innstillinger for WooCommerce. Bare å aktivere programtillegget vil deaktivere fragmentering av WooCommerce -handlekurven på alle sidene på nettstedet ditt. Det fungerer med logikken for å sjekke om siden din inneholder Ajax -fragmentanrop i kildekoden.

Hvis ja, vil det kontrollere at handlekurven er tom når siden lastes inn. Når begge disse betingelsene er oppfylt, vil WP Rocket lagre siden midlertidig i buffer og vises når siden lastes inn neste gang. Hvis du finner et problem, kan du bruke hjelper -pluginet til å deaktivere hurtigbufring av Ajax -fragmenter.

Plugins som W3 Total Cache tilbyr også fragmentbuffer som en premiumutvidelse. Du må imidlertid betale $ 99 årlig abonnement for å få premiumfunksjoner. I stedet koster WP Rocket $ 49 per år med enkelt oppsett, og du kan også få 10% rabatt ved å abonnere på nyhetsbrevet deres.

5 Test av sidehastighet

Hvis du har lagt til koden manuelt, må du sørge for å tømme hurtigbufferen i hurtigbufferpluggen og rense lakkbuffer på serveren hvis tilgjengelig. Tøm på samme måte alle nivåer for hurtigbufring hvis du har installert WP Rocket -plugin. Etter det, sjekk på Google PageSpeed ​​Insights, og du bør ikke se "wc-ajax = get_refreshed_fragments" -skriptet under gjengivelsesblokkerende JavaScript-seksjon. Du kan også enkelt få 100 poengsum på mobil og skrivebord når blokkeringstiden er 0 ms.

Løs langsom sideinnlasting med WooCommerce wc-ajax = get_refreshed_fragments

Deaktiver stiler og skript for WooCommerce

Også på pingdom bør WooCommerce-skript som kaller "wc-ajax = get_refreshed_fragments" ikke være synlig under "Filforespørsler" -delen. Poengsummen for sidehastighet bør økes spesielt etter at WooCommerce Ajax -skriptet er deaktivert.

6 Stoppe WordPress Heartbeat API

WooCommerce -plugin legger til mange attraktive dashbord -widgets som viser salg og statistikk. Det vil imidlertid koste deg mye ved å dra nettstedets lastehastighet. Dashbord -widgetene oppdaterer innholdet dynamisk ved hjelp av admin Ajax -samtaler som ligner på handlekurvfragmentering i WooCommerce. Dette gjøres ved hjelp av standard WordPress API som kalles heartbeat API.

Vanligvis anbefaler vi ikke å ha de dynamiske widgetene på dashbordet. Du kan ganske enkelt deaktivere admin-ajax-anropene eller WordPress heartbeat API for å redusere serverbelastningen og forbedre sidehastigheten til WordPress-nettstedet ditt. Plugins som WP Rocket kan bidra til å deaktivere heartbeat API fra administrasjonspanelet.

Siste ord

WooCommerce er en av de enkle måtene å bygge nettbutikken din på WordPress. Men nettbutikker trenger visse grunnleggende funksjoner som dynamisk handlevognoppdatering. Etter vår erfaring er det vi har sett at 90% av WooCommerce -brukerne selger enkle digitale varer. Butikken deres er bare et tillegg til den store bloggen eller innholdssiden. I dette tilfellet anbefaler vi på det sterkeste å deaktivere admin Ajax -anropene slik at alle andre sider på nettstedet vil lastes inn raskere uten å påvirke brukeropplevelsen.

Hvis du har en fullverdig butikk, trenger du funksjonen for fragmentering av handlekurven for å dynamisk oppdatere handlekurven uten å oppdatere siden. I slike tilfeller må du sørge for å ha en vertsserver av høy kvalitet sammen med hurtigbufring -plugins som WP Rocket eller W3 Total Cache, som har førsteklasses alternativer for bufring av sidefragmenter for å forbedre sidehastigheten.

Opptakskilde: webnots.com
Leave A Reply

Dette nettstedet bruker informasjonskapsler for å forbedre din opplevelse. Vi antar at du er ok med dette, men du kan velge bort det hvis du ønsker det. jeg akseptererMer informasjon