WooCommerce Cart Fragments ja skriptide tingimuslik laadimine

Cart Fragments teeb AJAX päringu igal lehe laadimisel – ka blogipostituses ja avaleheküljel. Koodinäited tingimuslikuks laadimiseks ja täielikuks deaktiveerimiseks.

WooCommerce on võimas, aga vaikimisi käitub see nagu külastaja, kes astub tuppa ja lülitab kõik tuled põlema – olenemata sellest, kas tuba on kasutusel. Igas toas. Korraga.

Cart Fragments skript teeb AJAX päringu igal lehe laadimisel, igal lehel, igale külastajale – et uuendada ostukorvi ikooni. Blogipostitus, avaleht, kontaktileht – kõikjal sama AJAX päring. Isegi siis, kui külastaja pole poes kordagi käinud.

See on üks lihtsamalt lahendatavatest jõudlusprobleemidest WooCommerce saidil.


Mis on Cart Fragments

Cart Fragments on WooCommerce’i JavaScript skript, mis hoiab ostukorvi ikooni ajakohana ilma lehe uuendamata. Iga lehe laadimisel teeb skript AJAX päringu /?wc-ajax=get_refreshed_fragments – server vastab ostukorvi sisu andmetega, JavaScript uuendab ikooni.

Iseenesest mõistlik funktsioon. Probleem on “igal lehe laadimisel, igal lehel” osa.

Mõju jõudlusele:

  • Täiendav HTTP päring igal lehe laadimisel
  • Päring käib läbi PHP (ei saa olla täislehe vahemälus)
  • Aeglastel serveritel lisab 100-300ms laadimisaega
  • Google Lighthouse märgib selle “Reduce server response times” all

Lahendus 1 – deaktiveeri Cart Fragments mittepoodi lehtedel

Kõige lihtsam lahendus: lase Cart Fragments töötada ainult poe lehtedel.

/**
 * Deaktiveeri WooCommerce Cart Fragments mittepoodi lehtedel
 * Lisada child theme functions.php faili
 */
add_action( 'wp_enqueue_scripts', 'hnd_deaktiveeri_cart_fragments', 11 );

function hnd_deaktiveeri_cart_fragments() {

    // Kontrolli kas WooCommerce on aktiivne
    if ( ! function_exists( 'is_woocommerce' ) ) {
        return;
    }

    // Poe lehed kus Cart Fragments PEAB töötama
    $on_shop_page = (
        is_woocommerce() ||   // kõik WooCommerce lehed
        is_cart() ||          // ostukorv
        is_checkout() ||      // kassa
        is_account_page()     // konto
    );

    // Deaktiveeri kõikjal mujal
    if ( ! $on_shop_page ) {
        wp_dequeue_script( 'wc-cart-fragments' );
        wp_deregister_script( 'wc-cart-fragments' );
    }
}

Tulemus: Cart Fragments töötab poes, puudub blogipostituses, avaleheküljel, kontaktilehel jne.


Lahendus 2 – deaktiveeri Cart Fragments täielikult (lihtsa checkout vooga)

Kui su poe checkout voog on lihtne (toode → lisa ostukorvi → checkout, ilma eraldi ostukorvi leheta), ei ole Cart Fragments üldse vajalik. Ostukorvi ikooni uuendamine “Lisa ostukorvi” klikil saab teha JavaScript-iga ilma AJAX päringuta.

// Deaktiveeri Cart Fragments täielikult
add_action( 'wp_enqueue_scripts', 'hnd_eemalda_cart_fragments', 11 );

function hnd_eemalda_cart_fragments() {
    wp_dequeue_script( 'wc-cart-fragments' );
    wp_deregister_script( 'wc-cart-fragments' );
}

Hundikuu lehe puhul kasutame seda täieliku deaktiveerimise lahendust – checkout voog on lihtne ja Cart Fragments ei ole vajalik.


WooCommerce skriptide ja stiilide laiem kontroll

Cart Fragments on üks näide, aga WooCommerce laeb vaikimisi palju rohkem skripte ja stiile igal lehel. Täielik kontroll:

/**
 * WooCommerce skriptide ja stiilide tingimuslik laadimine
 * Laeb WooCommerce ressursid ainult poe lehtedel
 */
add_action( 'wp_enqueue_scripts', 'hnd_woocommerce_scripts_tingimuslik', 99 );

function hnd_woocommerce_scripts_tingimuslik() {

    if ( ! function_exists( 'is_woocommerce' ) ) {
        return;
    }

    // Poe lehed – WooCommerce skriptid vajalikud
    if ( is_woocommerce() || is_cart() || is_checkout() || is_account_page() ) {
        return; // Lase kõik laadida
    }

    // Mittepoodi lehed – eemalda WooCommerce skriptid
    $wc_scripts = array(
        'wc-cart-fragments',
        'woocommerce',
        'wc-add-to-cart',
        'wc-add-to-cart-variation',
        'jquery-blockui',
        'js-cookie',
        'wc-geo-location',
    );

    foreach ( $wc_scripts as $script ) {
        wp_dequeue_script( $script );
        wp_deregister_script( $script );
    }

    // Eemalda ka WooCommerce stiilid mittepoodi lehtedel
    // (ainult kui kasutad custom shop CSS-i)
    // wp_dequeue_style( 'woocommerce-general' );
    // wp_dequeue_style( 'woocommerce-smallscreen' );
}

Perfmatters Script Manager – visuaalne lahendus

Kui koodikirjutamine ei ole eelistus, lahendab Perfmatters Script Manager sama probleemi visuaalselt.

Perfmatters → Script Manager → leia WooCommerce cart fragments → määra “Disable everywhere” ja seejärel “Enable on” WooCommerce lehekülgedel.

Script Manager näitab täpselt mis skriptid igal lehel laadivad ja laseb need ühe klõpsuga sisse/välja lülitada. Kasulik audit tööriist ka – tihti leitakse skripte, mida pole mäletatudki installida.


Mis veel aeglustab – WooCommerce jõudluse audit

Cart Fragments lahendatuna, vaata järgmisi WooCommerce jõudlusprobleeme:

WooCommerce session handling – WooCommerce loob igale külastajale sessiooni isegi kui nad pole poes käinud. See tekitab andmebaasikandeid. Lahendus: woocommerce_session_handler filter ja sessiooni loomise optimeerimine.

Product lookup tables – suure kataloogiga poodidel (500+ toode) tasub aktiveerida WooCommerce Product Lookup Tables (Settings → Advanced → Features). See kiirendab kategooria- ja otsinglehti märkimisväärselt.

HPOS (High-Performance Order Storage) – WooCommerce uus tellimuste salvestussüsteem, mis kasutab eraldi andmebaasitabeleid. Kiirem kui vana custom post type põhine süsteem. Aktiveeritav Settings → Advanced → Features.

Lazy loading variatsioonid – varieeruva tootega lehtedel laeb WooCommerce kõik variatsiooniandmed JSON-na lehe laadimisel. Suure variatsioonide arvuga (50+) toode võib tekitada 100+ KB JSON andmeid. Lahendus: woocommerce_ajax_variation_threshold filter.

// Laeb variatsioonid AJAX-ga kui rohkem kui 20 variatsiooni
add_filter( 'woocommerce_ajax_variation_threshold', function() {
    return 20;
});

Kokkuvõte

WooCommerce jõudlusoptimeerimine on kihiline:

  1. Cart Fragments – deaktiveeri mittepoodi lehtedel (või täielikult lihtsa checkout vooga)
  2. Skriptid ja stiilid – tingimuslik laadimine ainult poe lehtedel
  3. HPOS ja lookup tables – aktiveeri uued funktsioonid
  4. Variatsioonid – AJAX laadimine suurte variatsioonide arvuga toodetel

Iga samm annab mõõdetava tulemuse – vähem HTTP päringuid, väiksem lehe kaal, parem Lighthouse skoor mittepoodi lehtedel.

Seotud postitused

0+
Lõpetatud projekti
0+
Aktiivset partnerit
0%
Rahulolevaid kliente

Miks valida Hundikuu?

Paindlik arendus

Loome nii kiireid standardlahendusi kui täielikke erilahendusi. Soovid kiirelt valmisdisainile veebilehte või hoopis API integratsioone ja erifunktsioone – me kirjutame koodi, mis töötab.

Kiirus ja SEO

Iga projekt aluseks optimeeritud struktuur ja kiire laadimisaeg. Tehniline SEO pole lisateenus vaid standard – Google ja kasutajad hindavad mõlemat.

Pikaajaline partner

Projekt ei lõpe käivitamisega. Pakume hooldust, jätkuvat tuge ja edasiarendust. Teie veebileht kasvab koos äriga – lisame funktsionaalsust ja optimeerime pidevalt.

Soovid ettevõtet nähtavamaks teha?

Hundikuu muudab teie jalajälje nähtavaks ning aitab sõnumil kaugele kanduda.