Cloudflare is a popular reverse proxy and caching solution for WordPress and other websites. It is easy to install, very very customizable, and basically "just works".
But here's the problem -- caching and cloaking do not mix!
You cannot use a cache -- any cache -- reliably with cloaking. Here's why:
The purpose of caching is to NOT hit the web server. This means with a cache turned on the web server and PHP scripts do not get executed on traffic requests. The goals is to serve the page through the cache. Ideally this is much faster than going to the server and running through the WordPress loop or other PHP scripts.
If you are not technical and this all sounds like gobbledygook here is your take away
NEVER USE A CACHE WITH CLOAKING.
There -- that was easy.
Now, there are good reasons to use Cloudflare for its page rules and reverse proxy. Again, if you aren't technical just don't use it. But if you are and you know you want or need these then there is a simple solution:
Turn off caching in Cloudflare for your domain.
Go to Page rules. You will likely have a single rule for all your site settings. Edit it and set Cache Level to "Bypass"