Commit 7e59a29
committed
Take jQuery and the oversized banner plates off the LCP path
Search Console reports 12 129 mobile URLs over the 2.5s LCP threshold, in three
groups. Measured against the live sites on a throttled Moto G4 (Slow 4G, 4x CPU,
cold cache), they had three different causes, and the sustained TTFB (~220ms) was
not one of them.
The compact inner-page strip was an LCP element nobody had counted. It renders
375x72 CSS px but was served the hero's 768x432 derivative, so object-fit:cover
discarded ~85% of 57 KiB — and it carried fetchpriority="low", on the reasoning
that a decorative image should not compete with content fetches. The browser was
painting it above the fold regardless, so the only effect was to hold it in
flight for 3.5-4.9s. It paints 25 920 px², which beats any item title shorter
than about two and a half lines, and on those pages it WAS the LCP, at 3.5s.
"Decorative" is not a property the LCP algorithm can read. It now has its own
pre-cropped ~6.25:1 band assets at normal priority. Deliberately not preloaded:
a preload is emitted before the stylesheet, so it competes with the
render-blocking CSS, and the preload scanner already starts a plain <img src>
near the top of <body>.
jQuery and global.js are now deferred. They were render-blocking because
deferring them in v2.6.14 threw "Omeka is not defined" — true, but never scoped:
across all twelve live page types, core's inline `Omeka.jsTranslate = …` block is
the ONLY parse-time reference to `Omeka` or `$` on the public site, and nothing
inline calls `$(…)` at all. It is one problem, and the theme owns it, because the
theme is what calls jsTranslate(). A three-block bridge creates the namespace
before that assignment, captures what was attached, and merges it back after
global.js — whose `var Omeka = {…}` replaces the object rather than extending it.
citation.js, vanilla enhancement for a below-the-fold panel, is deferred too.
Every served banner derivative is now grayscale. _banner.scss paints the plate
through `filter: grayscale(1)` in both schemes and hides it in print, so the
colour channels could never reach a screen; they were 21-28% of each file, fetched
to be discarded at paint. This is what made the defer safe: on its own, deferring
jQuery cost the homepage ~300ms, because a 112 KiB hero (what a DPR-3 phone picks)
shared bandwidth with it for longer. The master stays in colour — it is the source
of truth and gen-pwa-icons.js replays the duotone from it — so the srcset's top
candidate moves to a served banner-1400.webp.
Medians of 3 runs, same rig, six page types (as-is -> after):
item/15850 LCP 3532 -> 1584 FCP -408
page/hajj-bf LCP 1780 -> 1244 FCP -532
item/11729 LCP 2136 -> 1924 FCP -256
item/74601 LCP 2392 -> 2204 FCP -184
overview LCP 1840 -> 1396 FCP -312
homepage LCP 2492 -> 2192 FCP -68
Omeka.jsTranslate resolves and works on all six, with no page or console errors.
Recorded as a negative result: the 472 KiB inline transcript on item/15850 is NOT
the problem it looks like. Stripping the <details> remainder buys ~50ms, inside
run-to-run noise, because HTML streams and the LCP element sits at the top of the
body. The progressive-disclosure design keeps the full text in the DOM for
crawlers, Ctrl+F and print at essentially no cost, so it is unchanged. That group
was failing for the banner strip, like the big one.1 parent 0f645b3 commit 7e59a29
12 files changed
Lines changed: 214 additions & 60 deletions
File tree
- asset/img
- language
- scripts
- view
- common
- layout
Loading
Loading
Loading
Loading
Loading
Loading
Loading
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
57 | | - | |
| 57 | + | |
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
113 | | - | |
| 113 | + | |
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| |||
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
129 | | - | |
| 129 | + | |
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
133 | | - | |
| 133 | + | |
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
153 | | - | |
| 153 | + | |
154 | 154 | | |
155 | 155 | | |
156 | 156 | | |
| |||
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
225 | | - | |
| 225 | + | |
226 | 226 | | |
227 | 227 | | |
228 | 228 | | |
| |||
246 | 246 | | |
247 | 247 | | |
248 | 248 | | |
249 | | - | |
| 249 | + | |
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | | - | |
| 253 | + | |
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
| |||
294 | 294 | | |
295 | 295 | | |
296 | 296 | | |
297 | | - | |
| 297 | + | |
298 | 298 | | |
299 | 299 | | |
300 | 300 | | |
| |||
378 | 378 | | |
379 | 379 | | |
380 | 380 | | |
381 | | - | |
| 381 | + | |
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
| |||
418 | 418 | | |
419 | 419 | | |
420 | 420 | | |
421 | | - | |
| 421 | + | |
422 | 422 | | |
423 | 423 | | |
424 | 424 | | |
| |||
474 | 474 | | |
475 | 475 | | |
476 | 476 | | |
477 | | - | |
| 477 | + | |
478 | 478 | | |
479 | 479 | | |
480 | 480 | | |
481 | | - | |
| 481 | + | |
482 | 482 | | |
483 | 483 | | |
484 | 484 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
71 | | - | |
| 71 | + | |
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
| |||
112 | 112 | | |
113 | 113 | | |
114 | 114 | | |
115 | | - | |
| 115 | + | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
131 | | - | |
| 131 | + | |
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
135 | | - | |
| 135 | + | |
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
| |||
224 | 224 | | |
225 | 225 | | |
226 | 226 | | |
227 | | - | |
| 227 | + | |
228 | 228 | | |
229 | 229 | | |
230 | 230 | | |
| |||
248 | 248 | | |
249 | 249 | | |
250 | 250 | | |
251 | | - | |
| 251 | + | |
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | | - | |
| 255 | + | |
256 | 256 | | |
257 | 257 | | |
258 | 258 | | |
| |||
296 | 296 | | |
297 | 297 | | |
298 | 298 | | |
299 | | - | |
| 299 | + | |
300 | 300 | | |
301 | 301 | | |
302 | 302 | | |
| |||
380 | 380 | | |
381 | 381 | | |
382 | 382 | | |
383 | | - | |
| 383 | + | |
384 | 384 | | |
385 | 385 | | |
386 | 386 | | |
| |||
420 | 420 | | |
421 | 421 | | |
422 | 422 | | |
423 | | - | |
| 423 | + | |
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
| |||
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
479 | | - | |
| 479 | + | |
480 | 480 | | |
481 | 481 | | |
482 | 482 | | |
483 | | - | |
| 483 | + | |
484 | 484 | | |
485 | 485 | | |
486 | 486 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | | - | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
12 | 17 | | |
13 | | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
14 | 30 | | |
15 | 31 | | |
16 | 32 | | |
17 | 33 | | |
18 | 34 | | |
19 | 35 | | |
20 | 36 | | |
21 | | - | |
| 37 | + | |
22 | 38 | | |
23 | 39 | | |
24 | 40 | | |
25 | 41 | | |
26 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
27 | 50 | | |
28 | 51 | | |
29 | 52 | | |
30 | 53 | | |
31 | 54 | | |
32 | 55 | | |
33 | | - | |
| 56 | + | |
34 | 57 | | |
35 | 58 | | |
36 | 59 | | |
| 60 | + | |
37 | 61 | | |
38 | 62 | | |
39 | 63 | | |
40 | 64 | | |
41 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
42 | 85 | | |
43 | 86 | | |
44 | 87 | | |
| |||
0 commit comments