Warming from cron writes every entry at the same moment, so every entry expires at the same moment — which reintroduces the stampede the cache was meant to prevent.
#!/usr/bin/env bash
set -euo pipefail
# after the release is on disk, BEFORE the node is marked ready
for path in / /shop /reports/summary; do
curl -fsS -o /dev/null "http://127.0.0.1${path}"
done
rm /var/www/app/shared/.draining
Warming during the deploy spreads the writes across whatever the deploy takes and, more importantly, means the first real user is not the one paying for a cold cache. Only entries that are both expensive and certain to be needed are worth warming — warming everything makes deploys slow in exchange for a hit rate that a few minutes of traffic would have produced anyway.