get('cache_ttl')['radar'] ?? 240; $service = new RadarService( // Buienradar leidt door naar een CDN, dus deze client volgt redirects. new BuienradarClient(new Http(followRedirects: true)), rtrim((string) $config->get('storage_path'), '/') . '/cache/radar.gif', (int) $ttl, ); $radar = $service->image(); header('Content-Type: image/gif'); header('Content-Length: ' . strlen($radar['bytes'])); // De browser mag het beeld hergebruiken tot de radar zelf ververst is. header('Cache-Control: public, max-age=' . max(30, (int) $ttl - $radar['age'])); header('X-Radar-Stale: ' . ($radar['stale'] ? '1' : '0')); echo $radar['bytes']; } catch (Throwable $e) { error_log('weerscherm: radar: ' . $e->getMessage()); http_response_code(503); header('Content-Type: text/plain; charset=utf-8'); header('Cache-Control: no-store'); echo "Radarbeeld niet beschikbaar\n"; }