dare.co.uk — Sunday traffic recompare

Baseline: 2026-05-06 (Wed, dashboard snapshot) · Today: 2026-05-10 (Sun, GraphQL fetch covering UTC 2026-05-09) · Window: 24h each

TL;DR

Trajectory — four days side by side

Metric Wed 05-06 Thu 05-07 Fri 05-08 Sat 05-09 Wed → Sat Δ
Total requests / 24h 8,937 11,230 14,212 14,820 +65.8%
Page views 2,076 2,165 2,941 2,906 +40.0%
Cached requests 3,778 5,046 6,621 6,423 +70.0%
Cache HIT % 42.3% 44.9% 46.6% 43.3% +1.0 pt
Threats 318 1,222 1,410 2,183 +586%
Threat % 3.6% 10.9% 9.9% 14.7% +11.1 pts
Real content (200) 4,086 3,175 4,776 4,960 +21.4%
Uniques (approx) 1,876 1,577 1,701 1,951 +4.0%

Status-code mix — evolution across the week

Code Wed Thu Fri Sat Read
200 4,086 (45.7%) 3,175 (28.3%) 4,776 (33.6%) 4,960 (33.5%) Real content. Slight absolute growth; share down because total volume up faster.
301 889 (9.9%) 2,867 (25.5%) 1,328 (9.3%) 2,405 (16.2%) Redirect batch still absorbing legacy SureCart / WP-taxonomy probes. Healthy.
302 0 56 (0.5%) 1,573 (11.1%) 1,094 (7.4%) Newer 302s introduced mid-week. Stable now.
403 322 (3.6%) 1,225 (10.9%) 1,423 (10.0%) 2,184 (14.7%) Bot Fight Mode tarpit. Escalating with bot pressure.
404 3,486 (39.0%) 3,429 (30.5%) 4,868 (34.3%) 3,812 (25.7%) Down 13 points since baseline. Real broken-link reduction.
405 28 (0.3%) 321 (2.9%) 58 (0.4%) 58 (0.4%) Method-not-allowed bot probes — settled at low level after Thu spike.
530 3 (0.0%) 0 6 (0.0%) 76 (0.5%) Origin sub-error — 25× jump Saturday. Worker hiccup, see Watch items.

What this tells us

The recent fixes are doing exactly what they were aimed at, and the trajectory is a clean four-day arc you could put in a deck:

  1. 404 share down 13 points (39% → 25.7%). The redirect batch is still absorbing the legacy URL probes Google was reading as “broken site”.
  2. 301s at 16.2% of all traffic — twice the baseline share. Each is an edge-computed response: fast, free, no origin work, and the right Google signal (“we know where it moved”).
  3. Real-content delivery is healthy. 4,960 200s on Saturday vs 4,086 on Wednesday (+21%). Page views up similarly. The HSTS + cache-control + sitemap + redirect work didn’t break anything visible to real visitors — the volume on the green side of the graph is genuine.
  4. Cache HIT held in a tight band. 43–47% across all four days. No regression from the deploy churn. Saturday’s 43.3% is well within the noise floor.

The framing for Friday’s recompare (“composition has shifted significantly”) still applies — but as of Sunday the shift has settled into a stable new shape, not a moving target.

Watch items

Recommendations

Methodology note

Addendum — 530 spike verified (2026-05-10)

The original watch-item hypothesis (“almost certainly deploy-window noise from today’s launchd-cron unblock + manual deploy testing”) was wrong on two counts. Documenting the falsification trail because the reasoning matters.

What I checked: five-minute-granularity GraphQL on httpRequestsAdaptiveGroups for the 21:30–01:00 UTC window around the spike, plus the dare-co-uk Worker’s modified_on timestamp.

What the data showed:

5-min bucket UTC 530 Total Notable
22:25 (23:25 BST) 34 641 363 × 403s — sustained 130 req/s, 100× the day’s average
23:20 (00:20 BST Sun) 35 61 57% error rate — focused failure, low volume
(rest of day) 7 full day flat background

Where the original hypothesis went wrong:

  1. Timeline. My launchd-cron unblock + manual deploys happened ~07:30 BST Sunday morning, not late Saturday. The 530 bursts were 7+ hours earlier.
  2. Cause. The signature isn’t deploy-window noise (which would look like a few 530s spread around a single short window with no other anomaly). It’s two distinct events: an attack-burst overwhelm at 22:25 (Worker hit CPU/concurrency limits during a sustained 130 req/s spike that the WAF was already blocking 363 of), and a focused failure at 23:20 (35 530s in 61 reqs is a broken endpoint signature, not volume overload).

What probably happened: botnet hit dare.co.uk hard at 22:20–22:30 UTC, WAF caught most of it (363 of 641), Worker briefly couldn’t keep up with the rest (34 × 530s). A second smaller burst at 23:20 hit a specific Worker path that was breaking. You likely investigated and shipped a fix — dare-co-uk Worker modified_on = 2026-05-09T23:32:54Z, exactly 7 minutes after the second burst. Zero 530s in any bucket after that, and zero today.

Lesson banked: when a watch-item ends with “probably X”, that’s a testable hypothesis. Five minutes of higher-resolution data is cheaper than publishing a wrong leading explanation.


Generated 2026-05-10 from 2026-05-10.json (data window: UTC 2026-05-09). Addendum verified against 5-min GraphQL + Worker metadata.

Source: dare_traffic_recompare_2026-05-10.md · Rendered 2026-05-12 13:48