Based on your observations, you're seeing expected behavior for ISR pages compared to fully static pages.
When a request comes in for an ISR page:
- The request first hits your closest Edge location
- If the page isn't cached or needs revalidation, it gets routed to a Vercel Function server (which may be in a different region like the US)
- The X-Vercel-Id header shows this path through multiple regions
In contrast, fully static pages are distributed to all Edge locations during deployment and served directly from the Edge without needing to hit a Function server.
The x-vercel-cache header showing MISS for ISR pages is also expected behavior in several scenarios:
- First-time requests for the page
- After the cache has expired (based on your revalidate time)
- When the page is being regenerated
For ISR pages, a MISS indicates that the response was not found in the edge cache and was fetched from the origin server. This is part of how ISR works - it generates pages on demand when they're not cached.
ISR pages are implemented as Prerender Functions on Vercel, which are Serverless Functions that get cached by the Edge Network. They follow specific caching rules and have an expiration time that determines when they'll be regenerated.
If you're seeing too many MISSes, you might want to:
- Increase your revalidate time
- Consider using a fallback static file for your ISR pages
- For truly static content, continue using fully static pages as you noted they perform better for your use case