How to determine if a site uses Cloudflare cache with curl

Why would you want to know if a site is using Cloudflare cache? If you are debugging or responding to an incident, it is easy to forget that Cloudflare might be caching a site and it will hamper your efforts. Since most hosts cache, you’ll be dealing with a host/CDN cache, Cloudflare cache, and local browser cache. Knowing how to purge or bypass those is important.

So, how can you tell if a site is using Cloudflare cache? Good news: Cloudflare returns a specific header for sites using their cache: cf-cache-status

You can check for it with curl!

curl -sI https://example.com | grep "cf-cache-status"

the -sI option there means “silent” and “headers only.

You might notice some different values attached to that cf-cache-status header: DYNAMIC, HIT, MISS, etc. You can learn about those here:

Default Cache Behavior · Cloudflare Cache docs
Cloudflare makes customer websites faster by storing a copy of the website’s content on our servers. Caching static resources at Cloudflare reduces your server load and bandwidth, with no extra charges for bandwidth spikes
developers.cloudflare.com

It is worth noting that the cache response you get for the homepage is not necessarily the same response you’ll get for other pages and assets on the site, but the presence of the header is a dead giveaway.

If you support a lot of sites like we do at work, you can script it with bash and get a neat list of which ones use Cloudflare cache:

for url in $(head -n800 urls.txt); do
    content="$(curl -sI $url | grep "cf-cache-status")"
    if test -z "$content"
    then
        continue
    else
        echo "$url || $content" >> cloudflare.txt
    fi
done

This assumes a file named urls.txt with one URL per line. It runs the curl command for each URL and only outputs a result in the text file (cloudflare.txt) if the grep is not empty.



Comments

Leave a Reply

Webmentions

If you've written a response on your own site, you can enter that post's URL to reply with a Webmention.

The only requirement for your mention to be recognized is a link to this post in your post's content. You can update or delete your post and then re-submit the URL in the form to update or remove your response from this page.

Learn more about Webmentions.