Problem
I’m seeing very high ISR cache activity that doesn’t match my actual traffic.
Setup
- ~400+ dynamic pages
use-cacheenabled- No time-based
revalidate - Only using on-demand
revalidateTag - I did NOT call
revalidateTag - No recent deployments
- Only a couple real visitors per day
Current Behavior
For just one day:
- I’m seeing ~10k
ISRreads in a single day - Significant
ISRwrites as well - Writes appear to happen across many/all dynamic pages
- Pages that were not visited still seem to get regenerated
- Activity continues throughout the day without obvious triggers
Expected Behavior
ISRreads roughly proportional to actual traffic- Writes only when:
- A page is visited after invalidation
- A deployment occurs
revalidateTagis called
Environment
App Router- Dynamic routes (e.g.
/[slug]) - Using
use-cache - On-demand revalidation via
revalidateTag(not triggered) - No
export const revalidate = X - No background jobs or cron hitting these routes
Questions
What can cause ISR reads and writes without user visits, deployments, revalidateTag calls, or time-based revalidation? Are there internal Vercel processes, bot traffic, prefetching, or cache validation mechanisms that could explain this behavior? How can I prevent it so ISR only reads on real requests, only writes on actual invalidation, and does not regenerate untouched dynamic routes? Is there a way to trace what is triggering these regenerations?