Cache warming as a deploy step, not a cron job

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.