dimhold.by
← Артыкулы

Медыянная галоўная старонка вырасла з 540 КБ да 3009 КБ. Краўлер, які яе ўзважвае, не пракручвае яе

Кожная спрэчка пра памер бандла, у якой я ўдзельнічаў, сканчалася тым, што нехта выкладваў графік вагі старонкі з HTTP Archive. Лінія ідзе ўгору і спрэчка скончана. Я сам выкладваў яго не раз. У маёй галаве рост быў пра выявы: вялікія фота для вялікіх экранаў. JavaScript быў тым, на што мы скардзіліся мімаходам.

Як гэтая лінія атрымліваецца, я ні разу не чытаў. Гэтым разам мне захацелася гіфку за 15 гадоў, давялося прачытаць.

Як я лічыў

HTTP Archive выкладвае шэраг у JSON на cdn.httparchive.org/reports/. На 8 кастрычніка 2026 года апошні абыход там ад 1 верасня. Перш чым браць хоць адну лічбу, я прачытаў SQL, які збірае гэтыя файлы, у іх рэпазіторыі dataform. Лічацца толькі галоўныя старонкі, 1 КБ гэта 1024 байты. Медыяна для выяў або JavaScript бярэцца толькі па старонках, дзе гэты тып ёсць, таму часткі не складаюцца ў цэлую старонку.

Я ўзяў шэраг дэсктопа і ліпеньскі абыход кожнага года. Лічыў на Python 3.12, гіфка намалявана ў matplotlib 3.11 і сціснута gifsicle 1.94.

Анімаваны графік, кадр на квартал з лістапада 2010 па верасень 2026. Тры квадраты паказваюць медыянную галоўную старонку дэсктопа ў HTTP Archive, яе выявы і яе JavaScript, у кожнага пункцірны контур значэння за ліпень 2011. Уся старонка расце прыкладна з 470 КБ да 2994 КБ, выявы да 1040 КБ, JavaScript да 773 КБ. Унізе лінія медыяннай старонкі, якая расце, з дзвюма пункцірнымі адзнакамі ў 2018 годзе, дзе змяніўся спіс адрасоў.
Плошча квадрата гэта медыяна ў КБ, HTTP Archive лічыць 1 КБ роўным 1024 байтам. Выявы і JavaScript гэта медыяны па старонках, дзе яны ёсць, таму 3 квадраты не складаюцца ў першы.

Што вырасла

У ліпені 2011 года медыянная галоўная старонка дэсктопа важыла 540 КБ, у ліпені 2026 года 3009 КБ, у 5,6 раза больш. Выявы выраслі з 269 да 1062 КБ, JavaScript з 109 да 767 КБ, у 7 разоў. Запытаў амаль столькі ж, было 64, стала 76, гэта значыць пацяжэлі самі файлы.

Мая карціна аказалася слушнай напалову. Выявы па-ранейшаму самая вялікая частка, але іх лінія на гіфцы спыняецца. З ліпеня 2019 па ліпень 2026 года медыянная вага выяў вырасла з 987 да 1062 КБ, на 8 працэнтаў за 7 гадоў, а JavaScript за тыя ж гады амаль падвоіўся.

Лета, калі вэб схуднеў

Першае, што я заўважыў у кадрах, гэта спад. 15 чэрвеня 2018 года медыянная старонка важыла 1709 КБ, а 1 ліпеня 1503 КБ, выявы ўпалі з 864 да 650 КБ. Я даволі доўга шукаў, што здарылася з вэбам у тым месяцы і нічога не знайшоў.

У HTTP Archive ёсць журнал змен. 1 ліпеня 2018 года абыход перайшоў на 1,3 мільёна адрасоў з Chrome UX Report. Колькасць адрасоў у даных вырасла з 461 тысячы да 1,28 мільёна. 15 снежня 2018 года спіс сінхранізавалі з усёй справаздачай, гэта 3,84 мільёна старонак. Медыяна вырасла на 17 працэнтаў за 1 абыход, выявы на 41 працэнт.

медыяна галоўнай старонкі дэсктопа, КБ, 2016–2019 500 1000 1500 2000 трав 2017: −13% агенты на Linux жн 2017: +15% запісу няма ліп 2018: −12% 1,3 млн CrUX снеж 2018: +17% увесь CrUX уся старонка выявы
Кожная прыступка гэта змена краўлера або спіса адрасоў, паводле журнала змен HTTP Archive. У прыступкі жніўня 2017 запісу ў журнале няма.

Па ўсіх 281 абыходах дэсктопа медыяннае змяненне паміж 2 суседнімі абыходамі 0,89 працэнта. Гэтыя прыступкі большыя ў 14–19 разоў. У 2017 годзе ёсць яшчэ 2 такога ж памеру. 1 траўня тэставыя агенты пераехалі на Linux і медыяна ўпала на 13 працэнтаў. 1 жніўня яна вырасла на 15 працэнтаў, а запісу ў журнале няма. Адзін толькі HTML упаў з 29 да 14 КБ у траўні і вярнуўся да 28 КБ у жніўні. Думаю, справа ў замеры: старонкі не губляюць палову свайго HTML на 3 месяцы. Стыў Саўдэрс пісаў пра тое, як змена методыкі гне гэты шэраг, яшчэ ў 2013 годзе, я знайшоў толькі пазнейшыя выпадкі.

Спіс рос і далей, да 13,2 мільёна галоўных старонак у сакавіку 2025 года, у верасеньскім абыходзе іх 11,4 мільёна. Зрэзы па рангу ёсць з траўня 2021 года і я праверыў, ці не тлумачыцца нядаўні рост проста іншай выбаркай. 1000 самых наведвальных сайтаў за гэтыя 5 гадоў выраслі з 1704 да 2843 КБ, хутчэй за ўвесь спіс.

Куды падзеліся выявы

У ліпені 2017 года медыянная галоўная старонка рабіла 41 запыт выяў, у ліпені 2026 года 19. За тыя ж гады доля старонак з loading="lazy" хаця б на адной выяве вырасла з 0 да 42,5 працэнта.

дэсктоп з 2019 года, ліпень кожнага года, 2019 = 100 50 100 150 200 189 КБ JavaScript 108 КБ выяў 61 запыты выяў доля старонак з loading=lazy, % 0 2019 1,6 2020 17,9 2021 24 2022 27,3 2023 33,2 2024 37,8 2025 42,5 2026
Медыяны HTTP Archive, ліпеньскі абыход кожнага года. Доля з loading=lazy гэта метрыка imgLazy з HTTP Archive.

Лянівыя выявы загружаюцца, калі апыняюцца побач з акном, таму я праверыў акно. Канфігурацыя абыходу ў HTTPArchive/crawl адкрывае старонкі дэсктопа ў акне 1920 на 1080, а мабільныя ў 360 на 512. Кроку пракруткі я не знайшоў ні там, ні ў іх форку wptagent. Пэт Мінан, аўтар WebPageTest, адказваў на тое ж пытанне на форуме HTTP Archive у красавіку 2021 года. Лянівыя выявы па-за акном не загружаюцца, значыць не вымяраюцца. Ён назваў гэта дакладным для першай загрузкі. У той жа галіне ён напісаў, што да таго месяца акно дэсктопа было 1024 на 768, так што ў 2019 годзе ў акно трапляла яшчэ менш старонкі.

Дакладна для першай загрузкі, з гэтым я згодны, але гэта не тая вага, якую я меў на ўвазе, калі выкладваў графік. Web Almanac 2021 года выказаў здагадку, што запытаў выяў стала менш праз лянівую загрузку, але замеру не прыводзіў. Я не знайшоў нікога, хто палічыў бы байты ніжэй за першы экран.

Мой прагон

Мой краўлер гэта Playwright 1.64 на Node 22 з Chromium 156. Для кожнага сайта ён адкрывае чысты кантэкст з выключаным кэшам і акном 1920 на 1080. Загружае галоўную старонку і чакае 2 секунды цішыні ў сетцы, не больш за 30 секунд. Гэта тое, што ўбачыў бы краўлер без пракруткі. Потым 10 секунд стаіць на месцы, гэта кантроль. Потым пракручвае данізу крокамі па 80 працэнтаў акна кожныя 400 мс і зноў чакае. Байты лічу па памеры перадачы па сетцы.

Сайты гэта 300 выпадковых даменаў з першага мільёна Tranco (seed 699). Загрузіліся 185, з іх 167 важылі хаця б 100 КБ, так адсякаюцца прыпаркаваныя дамены. У 45 працэнтаў з іх ёсць лянівая выява, блізка да 44,6 працэнта, якія HTTP Archive паказвае за верасень.

Да прагону я запісаў, што мяне абвергне. Медыянная старонка дадае ад пракруткі менш за 3 працэнты, медыянная старонка з лянівымі выявамі менш за 5. Выйшла і тое і другое, 0,1 і 4,1 працэнта. 43 працэнты старонак не дагрузілі ніводнага байта. Стаянне на месцы дадало 1,5 працэнта ўсіх байтаў. Пракрутка дадала 12,6.

Але графік паказвае медыянную старонку, а не медыянную прыбаўку. Медыяна ўсёй маёй выбаркі пасля пракруткі ссунулася з 2943 да 3568 КБ, на 21 працэнт. Выявы выраслі з 1187 да 1647 КБ. Я даволі доўга шукаў баг у сваім скрыпце. Старонкі з лянівымі выявамі цяжэйшыя: медыяна 3901 КБ супраць 2352 КБ у астатніх. 8 з 83 старонак, якія былі ніжэй за медыяну, пасля пракруткі апынуліся вышэй за яе. Гэтую другую меру я выбраў ужо пасля прагону, таму давяраю ёй менш. На 167 старонках 95-працэнтны бутстрэп-інтэрвал шырокі: ад 7 да 40 працэнтаў для старонкі, ад 12 да 77 для выяў.

медыяна да і пасля пракруткі данізу, мой прагон да пракруткі дадала пракрутка уся старонка дэсктоп, n = 167 2943 → 3568 КБ, +21% (7–40%) выявы дэсктоп, n = 167 1187 → 1647 КБ, +39% (12–77%) уся старонка тэлефон, n = 120 2915 → 3806 КБ, +31% (5–62%) выявы тэлефон, n = 120 1154 → 1588 КБ, +38% (11–84%)
Медыяны па старонках, якія загрузіліся і важылі да пракруткі хаця б 100 КБ. Дэсктоп гэта акно 1920×1080, тэлефон 360×512 пры шчыльнасці пікселяў 3. У дужках 95-працэнтны бутстрэп-інтэрвал для росту медыяны.

Потым я прагнаў першыя 200 тых жа даменаў у рэжыме тэлефона, 360 на 512 пры шчыльнасці пікселяў 3. Залічана 120 старонак. Медыянная старонка з лянівымі выявамі дадала 11,7 працэнта, вышэй за мой парог. Трэць усіх старонак дадала 10 працэнтаў і больш. Медыяна выбаркі ссунулася з 2915 да 3806 КБ, на 31 працэнт, інтэрвал ад 5 да 62 працэнтаў. Web Almanac 2022 года выказаў здагадку, што на тэлефонах выяў менш, чым на дэсктопе, бо лянівая загрузка не спрацоўвае на маленькім першым экране. Мой прагон на тэлефоне з гэтай здагадкай сыходзіцца.

Большая частка байтаў, што прыйшлі пры пракрутцы, гэта выявы: 75 працэнтаў на дэсктопе і 71 на тэлефоне. Ці тлумачыць гэта тое, што лінія выяў перастала расці, сказаць не магу. Мой прагон гэта адзін дзень у 2026 годзе, а ў 2019 годзе лянівую загрузку рабілі ў асноўным на JavaScript. Паўтарыць гэта цяпер нельга.

Чаго я не правяраў

  • Мая выбарка гэта дамены Tranco, а не спіс CrUX, які бярэ HTTP Archive. Па адным прагоне на старонку з аднаго сервера.
  • Прыкладна трэць старонак дэсктопа так і не сціхла да пракруткі, таму частка іх байтаў пры пракрутцы можа быць фонавым трафікам. У суме пракрутка прынесла ў 8 з лішкам разоў больш байтаў, чым кантрольная фаза, але для асобнай старонкі раздзяліць іх я не магу.
  • HTTP Archive публікуе яшчэ ацэнку Lighthouse для байтаў выяў за межамі экрана. Са сваімі лічбамі я яе не параўноўваў.