CF-cache-status: DYNAMIC and server: cloudflare

I try to avoid CloudFlare server when involved Cache rules.

When i curl, there is cf-cache-status shows : DYNAMIC

I try to fix CF-Cache-Status: HIT

How to exclude server Cloudflare and use only NGINX server or cache plugin?

The current state shows Your website seems to use Cloudflare, which handles the browser caching rules.

As caching rules give bad points, how to manage using Caxche plugin as Cloudflare should not be used?

Which settings within Cloudflare overwrite NGINX or Cache plugin as I did not implemented any Cache rule.

Hey Matjaz,

When Cloudflare shows cf-cache-status: DYNAMIC, it means Cloudflare has determined the content shouldn’t be cached — typically because of cookies, request headers, or how your origin server sets Cache-Control headers. This is Cloudflare’s default behaviour for HTML pages and won’t change unless you explicitly configure caching rules.

Let me break down what’s happening:

Cloudflare vs. Nginx/cache plugin

  • Cloudflare sits in front of your Nginx server, so all requests go through Cloudflare first
  • Even if you haven’t set specific caching rules, Cloudflare’s default is to treat HTML as dynamic (bypassing its edge cache)
  • Nginx and your cache plugin operate behind Cloudflare, so they can still cache content — but Cloudflare’s headers and behavior may override what the browser sees

To get CF-Cache-Status: HIT
You need to create a Page Rule or use Cache Rules (newer interface) in your Cloudflare dashboard:

  1. Go to Rules > Page Rules (or Rules > Cache Rules)
  2. Add a rule for your URL pattern (e.g., yourdomain.com/*)
  3. Set Cache Level to Cache Everything
  4. Optionally set Edge Cache TTL to something appropriate

This tells Cloudflare to cache the response at the edge, and if successful, cf-cache-status will change from DYNAMIC to HIT.

But there’s a catch — if your WordPress site sets Cache-Control: no-cache or sends cookies with the request, Cloudflare may still bypass the cache. You may need to use a Cache Bypass Cookie rule to strip out unnecessary cookies from cached requests.

Regarding your specific question about Cloudflare overriding Nginx/cache plugins:
Cloudflare respects the Cache-Control headers your Nginx/cache plugin sends. If your cache plugin sets Cache-Control: s-maxage=3600 or similar, Cloudflare should honour that — but only if the content is eligible for caching in the first place (which is where the Page/Cache Rule comes in).

If you truly want to exclude Cloudflare entirely from handling caching, you can:

  • Set Cache Level to Standard (which only caches static assets like images, CSS, JS)
  • Or put your site on Development Mode temporarily to test
  • Or remove Cloudflare entirely if you don’t need its CDN/DDoS protection

The browser caching rules you mentioned that give “bad points” — are you referring to GTmetrix or a similar audit? Cloudflare’s default browser cache TTL is typically 4 hours for static assets, which is usually fine. You can adjust that under Speed > Optimization > Browser Cache TTL.

Bottom line: If you want Cloudflare to cache your pages, create a Cache Everything page/cache rule. If you don’t want Cloudflare involved at all, remove the domain from Cloudflare and point DNS directly to your Nginx server.

Hope that clears things up!