@@ -16,7 +16,8 @@ After auditing the `apps/web` codebase, I found that the public page rendering p
1616| 4 | Redis caching layer | 🟡 High | 🟨 Medium | ⬜ Phase 2 |
1717| 5 | Convert client → server components | 🟡 Medium | 🟥 High | ⬜ Phase 2 |
1818| 6 | Optimize font loading | 🟢 Medium | ⬜ Small | ⬜ Phase 2 |
19- | 7 | HTTP caching / CDN | 🟢 Medium | ⬜ Small | ⬜ Phase 2 |
19+ | 7 | Lazy-load hero media | 🟢 Medium | ⬜ Small | ⬜ Phase 2 |
20+ | 8 | HTTP caching / CDN | 🟢 Medium | ⬜ Small | ⬜ Phase 2 |
2021
2122## Task Checklist
2223
@@ -28,6 +29,7 @@ After auditing the `apps/web` codebase, I found that the public page rendering p
2829- [ ] Add Redis tenant cache layer with resolver-level invalidation.
2930- [ ] Refactor public rendering path from broad client boundaries to server components.
3031- [ ] Load fonts dynamically per tenant theme instead of preloading all families.
32+ - [ ] Lazy-load hero video/iframes using facade or ` loading="lazy" ` .
3133- [ ] Add HTTP caching strategy (` revalidate ` /` Cache-Control ` ) and CDN partitioning with ` Vary: Host ` .
3234
3335--
@@ -283,3 +285,18 @@ async headers() {
283285```
284286
285287For a multi-tenant setup, put a CDN (Cloudflare, CloudFront) in front with ** Vary: Host** so each tenant gets its own cache partition.
288+
289+ ---
290+
291+ ## 🟡 8. Lazy-Load Hero Media (High ROI)
292+
293+ ** Impact: Faster LCP on pages with media**
294+ ** Effort: Small**
295+
296+ ### The Problem
297+
298+ The 16.0s Largest Contentful Paint is driven by the iframe/video at the top of the page, which competes with the 21 fonts for limited bandwidth.
299+
300+ ### The Fix
301+
302+ Use an iframe facade (like ` lite-youtube-embed ` ) or ` loading="lazy" ` for the hero video.
0 commit comments