A thousand cache entries written during a deploy with the same TTL expire in the same second, and the stampede recurs on a fixed interval forever.
// every entry expires at the same moment
Cache::put($key, $value, now()->addMinutes(60));
// spread over ten minutes, deterministically per key
$ttl = 3600 + (crc32($key) % 600);
Cache::put($key, $value, now()->addSeconds($ttl));
Deriving the jitter from the key rather than from randomness means the same key gets the same offset on every write, which keeps behaviour reproducible and stops a hot key drifting. Ten percent of the TTL is a reasonable spread — enough to flatten the cliff, not enough to make the cache lifetime unpredictable. This is the cheapest of the stampede mitigations and the one most often skipped in favour of a lock.