Jittered TTLs, so nothing expires together twice

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.