Solving the Conflict: Oxygen Builder 6 and LiteSpeed Cache ESI

Posted on - 16-01-260 Comments

Speed is the heart of a great user experience, but sometimes performance tools and page builders don’t play nice. Recently, while optimizing a site powered by Oxygen Builder 6, I ran into a wall: the builder's dynamic elements and certain AJAX-based functions stopped working as soon as LiteSpeed Cache (LSCache) was activated.

Here is the "skillful" journey of how I diagnosed the issue and why ESI (Edge Side Includes) was the key to the solution.

The Problem: Breakage Under Pressure

After enabling the "Aggressive" optimization profile in LiteSpeed, Oxygen Builder 6 began throwing errors. Dynamic content wasn’t loading, and certain save functions in the builder were failing.

At first glance, it looked like a JavaScript minification issue. However, standard exclusions didn't fix it. It was time to dig deeper.

The Diagnostic Path

I followed a systematic "Isolation" workflow to stop guessing and start knowing:

  1. The Bypass Test: By appending ?LSC_PAGESPEED_NOOPT=1 to the URL, I confirmed the issue wasn't just CSS/JS minification.
  2. The Module Isolation: I began disabling LSCache features one by one. When I toggled ESI (Edge Side Includes), the builder immediately sprang back to life.
  3. The Culprit: ESI is designed to serve dynamic "holes" in a static page. The error was happening because Oxygen Builder 6 relies on Nonces (security tokens) for its AJAX requests. When ESI was active, these nonces were being cached, becoming "stale" and invalidating the security check.

The Solution: Punching a Hole for ajax_nonce

Instead of disabling ESI entirely—which would hurt performance—the "skillful" fix was to tell LiteSpeed which specific security tokens must remain dynamic.

Step-by-Step Fix:

  1. Navigate to LiteSpeed Cache > Cache > ESI.
  2. Ensure Enable ESI is set to ON.
  3. Scroll down to the ESI Nonces text area.
  4. Add ajax_nonce on its own line.
    • Note: For Oxygen Builder 6, this is the specific handle used to validate front-end and builder-side requests.
  5. Click Save Changes and Purge All cache.

The Result

By adding ajax_nonce to the ESI Nonces list, LiteSpeed now treats that specific security string as dynamic content. While the rest of the Oxygen-built page remains lightning-fast and statically cached, the security token is refreshed for every visitor, ensuring that AJAX functions never fail.

Pro-Tip for Oxygen Users

If you continue to see issues with specific Oxygen elements (like dynamic tabs or filtered galleries), check your browser console. If you see a 403 Forbidden error on an AJAX call, you likely have one more nonce handle to add to that list!


Additionally you can read into https://www.ibrahim-jaber.com/litespeed-cache-exclusions-for-oxygen-builder/ and apply them, but adding three extra

builder
oxygen
?oxygen=builder

Leave a Reply

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram