⚠️ OTTO Cache Serving Blank Pages on WordPress (0-Byte Response)

Camilo Aponte

Camilo Aponte

Last updated on Sep 30, 2026

If your WordPress front-end shows blank pages while /wp-admin and /wp-login.php still load normally, the OTTO full-page cache has likely stored an empty (0-byte) response. This article shows you how to confirm the cause using response headers and restore your site immediately.

⚠️ What a 0-Byte OTTO Cache Response Looks Like

A 0-byte cached response produces a specific symptom pattern you can distinguish from a PHP crash or a hosting outage:

  • Every front-end URL — homepage, posts, and category pages — returns HTTP 200 with a completely blank body
  • The browser shows a white or empty page with no error message and no partial content
  • The WordPress admin (/wp-admin), login page (/wp-login.php), and REST API endpoints continue to load normally
  • All visitors see blank pages — the issue is not limited to one browser or account

PHP errors and theme crashes typically break the admin dashboard too, or display a visible error message. A hosting outage returns a 5xx status code rather than HTTP 200. When you see HTTP 200 + blank body + working admin, check the OTTO cache first.

🔍 How to Confirm OTTO Cache Is Serving the Empty Response

The x-metasync-otto-cache response header tells you whether OTTO served a page from its cache. A value of HIT combined with a blank page body confirms a 0-byte cache event.

Check response headers in browser DevTools

  1. Open your browser and press F12 to open DevTools, then select the Network tab.
  2. Load your homepage or any blank front-end URL.
  3. Click the first document request in the list and open the Headers panel.
  4. Under Response Headers, locate the x-metasync-otto-cache header.

If the value is HIT and the page is blank, OTTO is serving the stored 0-byte response. If the value is MISS or the header is absent, OTTO is not the cause — check your active theme and plugins instead.

Check response headers with curl

Run the following command, replacing the URL with your site address:

curl -sI https://yoursite.com

Look for x-metasync-otto-cache: HIT and content-length: 0 in the output. Both values together confirm the diagnosis.

🛠️ How to Clear the OTTO Cache and Restore Your Site

Purging the OTTO full-page cache deletes the 0-byte entry and forces OTTO to re-cache a valid response on the next page visit. Your front-end returns to normal immediately after the purge.

Clear the cache from the WordPress admin

  1. Log in to /wp-admin — this continues to work even when the front-end is blank.
  2. In the left sidebar, go to Search Atlas → Settings (OTTO cache: Clear Page Cache / Clear Post Cache / Clear all cache).
  3. Click Clear All Cache and confirm when prompted.
  4. Reload your front-end homepage to verify pages are rendering correctly.

Clear the cache from the Search Atlas dashboard

  1. Log in to app.searchatlas.com and open your site's OTTO workspace.
  2. Go to Settings → Full-Page Cache.
  3. Click Purge Cache and confirm. You'll see a green confirmation message when the purge completes.

After purging, OTTO re-caches a fresh response the next time each page is visited. Reload a front-end URL to confirm the blank pages are resolved.

💡 Why a 0-Byte Response Gets Cached

OTTO stores the HTTP response it receives the first time it crawls a page. If that initial response is empty — due to a conflict at that exact moment — the empty response is stored and served to every subsequent visitor until the cache is cleared.

Common triggers include:

  • Page builder initialization failure: Plugins like Elementor Pro can output a blank body if a license check or asset load fails at the moment OTTO first crawls the page.
  • Theme activation during cache warm-up: Activating or switching a theme (such as Hello Elementor) while OTTO is building its cache can cause an empty response to be stored.
  • Managed hosting server rules: Hosts like WP Engine apply server-level request filtering that can interfere with OTTO's cache-crawl requests and produce a 0-byte response.
  • Plugin deactivation while cache is live: Deactivating a plugin that a cached page depends on causes the page to render blank, which OTTO then re-caches as valid content.

⚙️ How to Prevent Future 0-Byte Cache Events

Follow these practices to reduce the risk of OTTO caching an empty response:

  • Clear the OTTO cache before and after any theme change, major plugin update, or hosting migration.
  • After any maintenance window, reload a front-end page and confirm that x-metasync-otto-cache shows HIT with visible content — not a blank page.
  • Exclude pages that rely on external license checks or volatile dynamic content (steps below).

Exclude specific pages from the OTTO full-page cache

If a specific page repeatedly triggers empty-cache events, exclude it so OTTO always serves it dynamically:

  1. In /wp-admin, go to Search Atlas → Settings (OTTO cache) → Exclusions.
  2. Enter the URL path (e.g., /checkout or /my-account) in the Excluded URLs field.
  3. Click Save. OTTO bypasses the cache for those paths and serves them fresh on every request.

Excluded pages are always served dynamically and are not affected by future 0-byte cache events.

🎯 You can now confirm a 0-byte OTTO cache event using the x-metasync-otto-cache: HIT header, restore your site by purging the cache from /wp-admin or the Search Atlas dashboard, and reduce recurrence by clearing the cache around theme and plugin changes. For more on configuring OTTO's caching rules, see the OTTO Full-Page Cache Settings article.