Check Cloudflare Cache Status

Check if a resource is served from Cloudflare's cache by inspecting the CF-Cache-Status header.

Code

General
require 'net/http'
require 'uri'
uri = URI.parse(url)
response = Net::HTTP.get_response(uri)
return response['CF-Cache-Status'] || 'No CF-Cache-Status header'

Parameters

URL to check

Server

CF-Cache-Status Values

StatusMeaning
HITServed from Cloudflare cache
MISSNot in cache, fetched from origin
EXPIREDWas cached but has expired, refetched
STALEServed stale while revalidating
DYNAMICNot eligible for caching (e.g., POST requests, dynamic content)
BYPASSCache bypassed due to configuration

Real-World Usage

require 'net/http'
require 'uri'

def check_cf_cache(url)
  uri = URI.parse(url)
  response = Net::HTTP.get_response(uri)
  status = response['CF-Cache-Status']
  age = response['Age']

  {
    cached: status == 'HIT',
    status: status,
    age: age ? age.to_i : nil
  }
end

Testing with httpbin

Use httpbin to simulate different cache statuses:

  • https://httpbin.org/response-headers?CF-Cache-Status=HIT
  • https://httpbin.org/response-headers?CF-Cache-Status=MISS
  • https://httpbin.org/response-headers?CF-Cache-Status=EXPIRED

More Ruby Snippets