How to debug cache misses

Cache misses are requests where the queries could be cached but aren't, and the requests are passed through to the origin. Most commonly, the query result was simply not cached yet. If nobody has requested the same data since it last expired or was purged, it won't be cached.

However, sometimes even when you send the same request a second or third time you will see cache misses. This can be due to one of the following reasons:

  • The origin sends a Set-Cookie header: if your origin responds with a Set-Cookie header, we cannot cache that query response. Some origin servers (we've seen this specifically with PHP and Django) respond with a Set-Cookie header to every request, making it impossible to cache anything. In this case, you have to figure out how to disable this in your origin server.

  • The origin sends a Cache-Control header: if you have the "Ignore origin Cache-Control header" setting disabled, we will respect any Cache-Control header that your origin returns — including private, no-store. If you're seeing cache misses, check what the Cache-Control header of the response is. If it's private, no-store (or something similar) you have to disable either the setting or edit your origin server logic that determines the header.

If none of these reasons apply to you, please reach out to us at [email protected] so we can help you debug the issue.

Did this page help you?