Кожная спрэчка пра памер бандла, у якой я ўдзельнічаў, сканчалася тым, што нехта выкладваў графік вагі старонкі з 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.
Што вырасла
У ліпені 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 працэнт.
Па ўсіх 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 працэнта.
Лянівыя выявы загружаюцца, калі апыняюцца побач з акном, таму я праверыў акно. Канфігурацыя абыходу ў 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 для выяў.
Потым я прагнаў першыя 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 для байтаў выяў за межамі экрана. Са сваімі лічбамі я яе не параўноўваў.