Τα WooCommerce cart fragments είναι το script που ενημερώνει το καλάθι αγορών χωρίς να ξαναφορτώσει η σελίδα, και για χρόνια ήταν από τις συχνότερες αιτίες αργών eshops. Συχνά οι αργές επιδόσεις και τα σφάλματα σε WooCommerce ιστοσελίδες προκαλούνται από μεγάλο αριθμό αιτημάτων AJAX, καθώς αυτά τα αιτήματα δεν αποθηκεύονται στην cache. Από το 2023 όμως το WooCommerce άλλαξε τον τρόπο που φορτώνει τα cart fragments, ενώ σήμερα το μεγαλύτερο αντίστοιχο πρόβλημα που βλέπουμε στους servers μας έρχεται από αλλού, από τα bots που χτυπούν τα add-to-cart και filter URLs.
Γράψαμε αυτό το άρθρο το 2021. Το ενημερώσαμε το 2026 με τι ισχύει πλέον για τα cart fragments και με το πρόβλημα που το έχει αντικαταστήσει.
Τι είναι το get_refreshed_fragments
Το get_refreshed_fragments είναι το αίτημα AJAX που στέλνει το script των cart fragments στον server για να πάρει την τρέχουσα κατάσταση του καλαθιού. Λειτουργεί για να ενημερώνεται το mini cart, δηλαδή ο αριθμός προϊόντων και το σύνολο στο header, χωρίς ανανέωση της σελίδας.
Το πρόβλημα είναι ότι το αίτημα αυτό δεν μπορεί να εξυπηρετηθεί από την προσωρινή αποθήκευση (caching). Κάθε επισκέπτης σε κάθε σελίδα προκαλεί εκτέλεση PHP στον server, ακόμα και σε στατικά posts, pages και feeds που δεν έχουν καμία σχέση με το καλάθι. Έτσι μειώνεται η δυνατότητα προσωρινής αποθήκευσης και επιβαρύνεται ο server.
Μπορείς να το εντοπίσεις με οποιοδήποτε εργαλείο μέτρησης ταχύτητας ή στο αρχείο Access Log της ιστοσελίδας σου. Το αίτημα έχει τη μορφή:
https://domain.gr/?wc-ajax=get_refreshed_fragments
Και στο Access Log εμφανίζεται ως POST προς το ίδιο URL:
POST /?wc-ajax=get_refreshed_fragments HTTP/2.0
Τι άλλαξε στο WooCommerce 7.8
Στο WooCommerce 7.8 τα cart fragments σταμάτησαν να φορτώνονται σε όλες τις σελίδες. Σύμφωνα με το WooCommerce Developer Blog του Ιουνίου 2023, το script φορτώνεται πλέον μόνο όταν η σελίδα εμφανίζει το widget του καλαθιού, ή όταν ένα theme ή plugin το ζητά.
Αυτό σημαίνει ότι σε ένα ενημερωμένο eshop το πρόβλημα μπορεί να έχει ήδη λυθεί από μόνο του. Όμως αρκετά themes, όπως αναφέρει και το ίδιο το WooCommerce για το Storefront, έχουν το widget του καλαθιού μέσα στο header, οπότε τα cart fragments φορτώνονται ξανά σε κάθε σελίδα. Η λύση που προτείνει το WooCommerce είναι το Mini-Cart block, που δεν χρησιμοποιεί καθόλου το API των cart fragments.
Disable cart fragments, πότε χρειάζεται ακόμα
Disable cart fragments χρειάζεται ακόμα όταν το theme σου φορτώνει το παλιό widget του καλαθιού σε κάθε σελίδα και δεν μπορείς να το αντικαταστήσεις με το Mini-Cart block. Πριν κάνεις οτιδήποτε, έλεγξε στο Access Log αν υπάρχουν πράγματι αιτήματα get_refreshed_fragments. Αν δεν υπάρχουν, δεν έχεις τίποτα να απενεργοποιήσεις.
Αν υπάρχουν, οι επιλογές με τη σειρά που τις προτείνουμε είναι οι εξής:
- Mini-Cart block. Αντικατέστησε το widget του καλαθιού με το Mini-Cart block, όπως προτείνει το WooCommerce. Είναι η μόνη λύση που κρατά το καλάθι ενημερωμένο χωρίς τα cart fragments.
- Perfmatters. Το Perfmatters απενεργοποιεί τα cart fragments όταν το καλάθι είναι άδειο, δηλαδή στους περισσότερους επισκέπτες, και τα ενεργοποιεί μόλις κάποιος προσθέσει προϊόν.
- Κώδικας στο functions.php. Ο οδηγός του Business Bloomer δείχνει πώς τα απενεργοποιείς από το
functions.phpτου child theme.
Το δωρεάν plugin Disable Cart Fragments που προτείναμε το 2021 υπάρχει ακόμα, όμως σύμφωνα με το wordpress.org δεν έχει δοκιμαστεί με τις τρεις τελευταίες μεγάλες εκδόσεις του WordPress. Γι' αυτό σήμερα δεν το προτείνουμε ως πρώτη επιλογή.
Bots σε add-to-cart και filter URLs, το πρόβλημα του 2026
Bots σε add-to-cart και filter URLs είναι σήμερα από τις συχνότερες αιτίες που βλέπουμε να φτάνει ένα WooCommerce eshop στο όριο CPU του πακέτου του, και είναι στην ουσία το ίδιο πρόβλημα με τα cart fragments σε μεγαλύτερη κλίμακα. Πρόκειται πάλι για αιτήματα που δεν μπορούν να εξυπηρετηθούν από την cache, και κάθε ένα εκτελεί PHP και γράφει στη βάση δεδομένων.
Τα πιο βαριά αιτήματα είναι τα εξής:
?add-to-cart=. Κάθε αίτημα δημιουργεί session και γράφει στη βάση, σαν να πρόσθεσε πραγματικά κάποιος προϊόν στο καλάθι.- Φίλτρα προϊόντων, όπως
?filter_color=ή?orderby=. Κάθε συνδυασμός φίλτρων είναι νέο URL και νέο ερώτημα στη βάση. /cart/και/checkout/. Το WooCommerce δεν τα αφήνει ποτέ στην cache, γιατί δείχνουν το καλάθι του κάθε επισκέπτη.
Η Kinsta δημοσίευσε τον Ιούνιο του 2026 ότι μέσα σε 24 ώρες μέτρησε 7,67 εκατομμύρια αιτήματα add-to-cart από μόλις πέντε bots. Το ίδιο είδαμε και στους δικούς μας servers. Τον Σεπτέμβριο του 2026 ένας δηλωμένος crawler έκανε περίπου 93.000 αιτήματα την ημέρα σε filter URLs ενός μόνο eshop, ενώ σε άλλα eshops botnets με ψεύτικο User-Agent Chrome έστελναν κάθε αίτημα από διαφορετική IP, χωρίς Referer, σε add-to-cart και filter URLs. Σε αυτές τις περιπτώσεις η αρχική σελίδα συνέχιζε να ανοίγει κανονικά από την cache, ενώ το καλάθι και οι σελίδες με φίλτρα έβγαζαν σφάλματα.
WooCommerce robots.txt
Το WooCommerce robots.txt είναι το πρώτο και πιο ασφαλές μέτρο, γιατί λέει στους crawlers που σέβονται τους κανόνες να μην ακολουθούν URLs που δεν χρειάζονται στις μηχανές αναζήτησης. Η Google προτείνει ακριβώς αυτό για τα φίλτρα, αν δεν θέλεις να εμφανίζονται στα αποτελέσματα. Ένα παράδειγμα:
User-agent: *
Disallow: /*add-to-cart=*
Disallow: /*add_to_wishlist=*
Disallow: /*?*filter_
Πριν βάλεις τη γραμμή για τα φίλτρα, σιγουρέψου ότι δεν θέλεις κάποιες σελίδες με φίλτρα να εμφανίζονται στη Google, γιατί αυτό επηρεάζει το SEO. Αν το καλάθι και το checkout έχουν ελληνικά slugs, όπως /kalathi/, βάλε τα δικά σου slugs και όχι τα /cart/ και /checkout/.
Όμως το robots.txt είναι σήμα και όχι προστασία. Η Google, η Bing και οι περισσότεροι δηλωμένοι crawlers το σέβονται, αλλά ένα botnet με ψεύτικο User-Agent το αγνοεί. Γι' αυτό στους servers μας τα eshops προστατεύονται επιπλέον από το Imunify360 και τα δικά μας εσωτερικά εργαλεία ασφαλείας, με κανόνα να μη μπλοκάρεται ποτέ πραγματικός επισκέπτης ή crawler μηχανής αναζήτησης.
LiteSpeed Cache και WooCommerce
Το LiteSpeed Cache και το WooCommerce δουλεύουν μαζί έτσι ώστε οι σελίδες προϊόντων και κατηγοριών να σερβίρονται από την cache στους επισκέπτες, ενώ το καλάθι, το checkout και ο λογαριασμός πελάτη μένουν εκτός cache. Γι' αυτό κάθε αίτημα που παρακάμπτει την cache, όπως τα cart fragments, τα add-to-cart και τα φίλτρα, μετράει τόσο πολύ στην απόδοση του eshop.
Τρία πράγματα αξίζει να ελέγχεις τακτικά. Αν η cache είναι ενεργή από το LiteSpeed Web Cache Manager, αν το Access Log έχει μεγάλο αριθμό αιτημάτων get_refreshed_fragments, add-to-cart ή filter_, και αν η κατανάλωση πόρων στο Resource Usage του cPanel φτάνει συχνά στο όριο. Για το object cache της βάσης δεδομένων δες επίσης πώς ενεργοποιείς το Redis Object Cache στο WordPress.
Ένα ακόμα μάθημα από τα περιστατικά του 2026 είναι ότι ένας έλεγχος διαθεσιμότητας μόνο στην αρχική σελίδα δεν αρκεί για eshop, καθώς η αρχική μπορεί να ανοίγει από την cache ενώ το καλάθι πέφτει. Για μεγάλα eshops με πολλή κίνηση, τα πακέτα Semi Dedicated Hosting δίνουν πολλαπλάσια όρια CPU και RAM.
Το άρθρο διατίθεται με άδεια Creative Commons Αναφορά Δημιουργού 4.0 Διεθνές (CC BY 4.0). Μπορείς να το αναδημοσιεύσεις, με την προϋπόθεση να αναφέρεις την Konet ως πηγή με link προς αυτό το άρθρο.


