berrypod/lib
jamey 297f3de60f
All checks were successful
deploy / deploy (push) Successful in 1m26s
cache settings, categories, and media in ETS to cut per-request DB queries
Every shop page load was triggering ~18 DB queries for data that rarely
changes (theme settings, nav items, categories, shipping countries, logo,
header image). On a shared-cpu-1x Fly machine with SQLite this was the
primary performance bottleneck.

- Add SettingsCache GenServer+ETS for all non-encrypted settings
- Cache list_categories() with single-query N+1 fix (correlated subquery)
- Cache list_available_countries_with_names() in shipping
- Cache Media.get_logo() and Media.get_header()
- Remove duplicate LoadTheme plug from :shop and :admin pipelines
- Invalidate caches on writes (put_setting, product sync, media upload)
- Clear caches between tests via DataCase/ConnCase setup

Per-page queries reduced from ~18 to ~2.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 16:25:29 +00:00
..
berrypod cache settings, categories, and media in ETS to cut per-request DB queries 2026-03-02 16:25:29 +00:00
berrypod_web cache settings, categories, and media in ETS to cut per-request DB queries 2026-03-02 16:25:29 +00:00
mix/tasks add admin media library with image management and block picker integration 2026-02-27 22:20:51 +00:00
berrypod_web.ex add canonical URLs, robots.txt, and sitemap.xml 2026-02-23 21:47:35 +00:00
berrypod.ex rename project from SimpleshopTheme to Berrypod 2026-02-18 21:23:15 +00:00