Commit fd332dd
perf(docs): re-encode the hero cover to WebP and hoist its path into one constant (#12377)
The homepage video poster was a 2400x1200 PNG served at 974 CSS px. Measured
over the wire against a local `next build && next start`: 406,703 B, no
transport compression (image/png, Content-Length == file size). It is the
heaviest single element the homepage loads.
Re-encoded from the master `docs/screenshots/hero-cover-dark.png` to WebP at
quality 80 / effort 6 (sharp 0.35.3, libwebp 1.6.0), keeping 2400x1200 so the
declared `og:image:width` / `og:image:height` stay true and 2x displays stay
oversampled. 83,272 B on the wire -- 20.5% of the PNG, and 83,572 B including
response headers as Chrome's Resource Timing reports it.
Fidelity, measured at the exact device-pixel size Chrome paints (1948x974,
read off the running page): SSIM 0.994713, PSNR 47.10 dB against the master,
max per-pixel delta 24/255, 0.739% of pixels differing by more than 5/255. The
same harness scores the master against itself at SSIM 1.0 / PSNR infinity, so
it is not fabricating agreement. Crops of the four regions most at risk --
code panel, smallest dashboard labels, gradient headline, and the two
worst-scoring tiles -- are indistinguishable at 2x magnification.
WebP rather than AVIF deliberately: this is a plain `<img>` with no `<picture>`
fallback and it doubles as the og:image, so it must decode everywhere. AVIF is
measurably better per byte on this image (q60 reaches SSIM 0.998 at 65 KB) and
was rejected because unfurler support is not there.
The path was spelled three times -- the poster, the homepage card, the blog
card -- and two of those read as SEO config rather than image references. It is
now `HERO_COVER` in `lib/site.ts`, next to `SITE_ORIGIN`, carrying the
re-encode recipe and the reason the dimensions and the format are constrained.
`docs/screenshots/hero-cover-dark.png` -- the README's copy, a separate file
for a separate consumer -- is untouched: same blob sha before and after.
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>1 parent e5ce2ed commit fd332dd
6 files changed
Lines changed: 85 additions & 47 deletions
File tree
- apps/docs
- app/[lang]
- blog/[[...slug]]
- components
- lib
- public
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
81 | | - | |
| 81 | + | |
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
| |||
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
254 | 258 | | |
255 | | - | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
256 | 266 | | |
257 | 267 | | |
258 | 268 | | |
259 | 269 | | |
260 | 270 | | |
261 | 271 | | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | 272 | | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | 273 | | |
278 | 274 | | |
279 | 275 | | |
| |||
296 | 292 | | |
297 | 293 | | |
298 | 294 | | |
299 | | - | |
| 295 | + | |
300 | 296 | | |
301 | 297 | | |
302 | 298 | | |
303 | 299 | | |
304 | 300 | | |
305 | | - | |
| 301 | + | |
306 | 302 | | |
307 | 303 | | |
308 | 304 | | |
| |||
324 | 320 | | |
325 | 321 | | |
326 | 322 | | |
327 | | - | |
| 323 | + | |
328 | 324 | | |
329 | 325 | | |
330 | 326 | | |
331 | 327 | | |
332 | 328 | | |
333 | | - | |
| 329 | + | |
334 | 330 | | |
335 | 331 | | |
336 | 332 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
| 40 | + | |
40 | 41 | | |
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
46 | 47 | | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
53 | 52 | | |
54 | 53 | | |
55 | 54 | | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | 55 | | |
64 | 56 | | |
65 | 57 | | |
| |||
77 | 69 | | |
78 | 70 | | |
79 | 71 | | |
80 | | - | |
| 72 | + | |
81 | 73 | | |
82 | 74 | | |
83 | 75 | | |
84 | 76 | | |
85 | 77 | | |
86 | | - | |
| 78 | + | |
87 | 79 | | |
88 | 80 | | |
89 | 81 | | |
| |||
104 | 96 | | |
105 | 97 | | |
106 | 98 | | |
107 | | - | |
| 99 | + | |
108 | 100 | | |
109 | 101 | | |
110 | 102 | | |
| |||
119 | 111 | | |
120 | 112 | | |
121 | 113 | | |
122 | | - | |
| 114 | + | |
123 | 115 | | |
124 | 116 | | |
125 | 117 | | |
| |||
279 | 271 | | |
280 | 272 | | |
281 | 273 | | |
282 | | - | |
| 274 | + | |
283 | 275 | | |
284 | 276 | | |
285 | 277 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| |||
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
Binary file not shown.
Loading
0 commit comments