Disable Cart Fragments on WooCommerce: Complete Guide

woocommerce performance cart-fragments

Disable Cart Fragments on WooCommerce: Complete Guide

The problem

wc-cart-fragments.js is a script loaded by WooCommerce on every page of your site. Its job: update the mini-cart counter in real time via an AJAX request to /?wc-ajax=get_refreshed_fragments.

On every page load:

  • A ~10 KB JS file is loaded (+ jQuery as a dependency if not already present)
  • An AJAX request is sent to the server
  • The server runs PHP to rebuild the cart HTML
  • The response travels across the network

On a 500-product catalog, every visitor browsing triggers this request even if their cart is empty. The result: degraded TTFB (Time To First Byte) and a server processing useless requests.

Measure the impact

Before disabling anything, measure. Open your browser DevTools (F12), Network tab, and filter by wc-ajax. Reload a product page. You’ll see the get_refreshed_fragments request with its response time.

On typical shared hosting, this request takes between 200ms and 800ms. On a well-configured server with Object Cache, more like 50-150ms. Either way, it’s a request that has no reason to exist on most pages.

The cleanest method. Add this code to your child theme’s functions.php or in a snippet (Code Snippets, WPCodeBox, etc.):

add_action( 'wp_enqueue_scripts', function() {
    if ( is_cart() || is_checkout() ) {
        return; // Keep Cart Fragments on cart and checkout pages
    }
    wp_dequeue_script( 'wc-cart-fragments' );
}, 999 );

This disables the script on all pages except cart and checkout, where the real-time update is useful.

Variant: disable everywhere

If your theme doesn’t use an AJAX mini-cart (or if you use Block Checkout):

add_action( 'wp_enqueue_scripts', function() {
    wp_dequeue_script( 'wc-cart-fragments' );
}, 999 );

Solution 2: Via Perfmatters (Script Manager)

If you use Perfmatters, you can disable wc-cart-fragments per page type from the Script Manager interface:

  1. Enable Script Manager in Perfmatters → Settings
  2. Navigate to a product page
  3. Open the Script Manager (admin bar)
  4. Find wc-cart-fragments in the WooCommerce section
  5. Disable it everywhere except /cart/ and /checkout/

The advantage: no code, visual management, reversible in one click.

Solution 3: Via WP Rocket

WP Rocket offers a native option:

  1. WP Rocket → Settings → Add-ons
  2. Enable “WooCommerce”
  3. The “Disable Cart Fragments” option appears

Warning: WP Rocket disables it everywhere, including on the cart page. If your mini-cart stops updating, you’ll know why.

What to check after

  1. The mini-cart: add a product, navigate to another page. Does the counter update? If not, that’s expected — it will update on the next page reload.
  2. The cart page: verify /cart/ still works (quantity updates, product removal).
  3. The checkout: complete a full test order.
  4. Lighthouse: run an audit again. You should see improvement on Total Blocking Time (TBT) and potentially LCP.

Real-world impact

On stores I’ve optimized, disabling Cart Fragments removes 1 request per page and saves between 10 and 50 KB of JS (depending on whether jQuery is used elsewhere). On shared hosting, that’s typically 200-500ms saved on product page TTFB.

It’s a simple optimization, risk-free when done properly, with an immediate and measurable impact.


Need a full audit of your WooCommerce store? Request a free audit.

Need a WooCommerce store audit?

I'll send you a personalized report with the top priorities to improve. Free, no strings attached.