- Add ContactMapController serving /api/contacts/map with pre-gzipped JSON from Microwaveprop.Cache. Browsers handle Content-Encoding: gzip natively; payload drops from 5.7 MB raw to 1.5 MB on the wire (73%). Cache TTL 10 min, invalidated on contact insert alongside the other contact-map cache keys. - Move contact map payload out of the LiveView's initial HTML entirely. Shell renders with the filter chrome (count + band list); the hook fetches contacts from the HTTP endpoint in parallel with map init. This also avoids Phoenix.Socket's 64 KB frame limit (push_event would have required chunked transfer or a global frame size bump). - Parallelize ContactLive.Show hydrate: five independent DB loads (weather, solar, hrrr_path, terrain, iemre) now run concurrently via Task.async + Task.await_many. Total latency drops from sum(each) to max(each), cutting contact show hydrate time roughly 5x. |
||
|---|---|---|
| .. | ||
| page_html | ||
| user_registration_html | ||
| user_session_html | ||
| user_settings_html | ||
| beacon_monitor_controller.ex | ||
| contact_map_controller.ex | ||
| error_html.ex | ||
| error_json.ex | ||
| health_controller.ex | ||
| page_controller.ex | ||
| page_html.ex | ||
| user_registration_controller.ex | ||
| user_registration_html.ex | ||
| user_session_controller.ex | ||
| user_session_html.ex | ||
| user_settings_controller.ex | ||
| user_settings_html.ex | ||