As of Thursday, Aug 18, 00:05 AM UTC images on the mobile site of all Wikimedia projects are lazy loaded. The purpose of this page is to measure the impact this had on our users. In particular we were curious about English, Indonesian and Italian Wikipedia's.
Impact on bytes served to users
editComparison of sampled Wikipedia mobile web image and "core bytes" (essential HTML, JavaScript, and CSS) data transfer and pageviews 22-28 August 2016 (lazy loaded images generally on) against 8-14 August 2016 (lazy loading images only enabled on a relatively small set of wikis) suggested that lazy loading images saved approximately 43.63% in image data transfer, contributing to a 14.48% savings in the sum of image and core bytes.
Projected to 52 weeks, this suggests that some 450,000 GB of data transfer would be saved annually on mobile web Wikipedia due to image lazy loading.
The queries, BASH scripts, and resultant data are available as a zip file. Go to the region near cell P5690 in the ODS file for aggregate calculations.
Method for individual wikis
editOur previous experiments showed that we prevented the shipping of unnecessary bytes to our users. To measure this, using Hive, we analyzed request logs 10 days preceding and following the change. Since the change happened on the 18th August, we looked at requests from the 8th onwards.
Given the time it takes to analyse the amount of data we are crunching here, a query for each day was run.
The query that was run looked at every request in our access log made to our image server where the referrer of that image request was a page that matched a URL of a page in the main namespace for that wiki:
select
month,
day,
substr(referer,1,26),
sum(response_size)
from
webrequest
where
year = 2016
and month = 8 and day = 7
and uri_host = 'upload.wikimedia.org'
and referer rlike '^https://id\.m\.wikipedia\.org/wiki/([^:])+$'
and content_type rlike '^image'
and agent_type = 'user'
and http_status = '200'
group by
month,
day,
substr(referer,1,26)
;
The above query was repeated for English Wikipedia.
Results
editBytes savings on Indonesian Wikipedia
editDay of change is in bold.
day of week | date | total bytes of images shipped | MB | total bytes shipped (GB) | page views (million) | Δ bytes shipped compared to previous day (GB) |
MON | 07/08/16 | 97494015192 | 97494.01519 | 97.49401519 | ||
TUE | 08/08/16 | 103654929616 | 103654.9296 | 103.6549296 | 5.3 | 6.160914424 |
WED | 09/08/16 | 100296100098 | 100296.1001 | 100.2961001 | 5.4 | -3.358829518 |
THUR | 10/08/16 | 96713044037 | 96713.04404 | 96.71304404 | 5.2 | -3.583056061 |
FRI | 11/08/16 | 91334881816 | 91334.88182 | 91.33488182 | 4.9 | -5.378162221 |
SAT | 12/08/16 | 81084331368 | 81084.33137 | 81.08433137 | 4.1 | -10.25055045 |
SUN | 13/08/16 | 69321689051 | 69321.68905 | 69.32168905 | 3.4 | -11.76264232 |
MON | 14/08/16 | 81217571248 | 81217.57125 | 81.21757125 | 4 | 11.8958822 |
TUE | 15/08/16 | 82680945506 | 82680.94551 | 82.68094551 | 4.2 | 1.463374258 |
WED | 16/08/16 | 75591292241 | 75591.29224 | 75.59129224 | 3.8 | -7.089653265 |
THUR | 17/08/16 | 87703049407 | 87703.04941 | 87.70304941 | 4.1 | 12.11175717 |
FRI | 18/08/16 | 84731320752 | 84731.32075 | 84.73132075 | 4.5 | -2.971728655 |
SAT | 19/08/16 | 59483625343 | 59483.62534 | 59.48362534 | 4.1 | -25.24769541 |
SUN | 20/08/16 | 44027821340 | 44027.82134 | 44.02782134 | 3.4 | -15.455804 |
MON | 21/08/16 | 52147459414 | 52147.45941 | 52.14745941 | 4.1 | 8.119638074 |
TUE | 22/08/16 | 58203553559 | 58203.55356 | 58.20355356 | 4.8 | 6.056094145 |
WED | 23/08/16 | 61647558200 | 61647.5582 | 61.6475582 | 5.1 | 3.444004641 |
THUR | 24/08/16 | 61075354983 | 61075.35498 | 61.07535498 | 5.1 | -0.572203217 |
FRI | 25/08/16 | 60221200940 | 60221.20094 | 60.22120094 | 4.9 | -0.854154043 |
SAT | 26/08/16 | 53493810141 | 53493.81014 | 53.49381014 | 4.3 | -6.727390799 |
SUN | 27/08/16 | 45471485258 | 45471.48526 | 45.47148526 | 3.6 | -8.022324883 |
MON | 28/08/16 | 55564328478 | 55564.32848 | 55.56432848 | 4.3 | 10.09284322 |
Period | Bytes shipped in GB |
---|---|
10th-16th | 577.9437553 |
20th-26th | 390.8167586 |
Bytes shipped decrease | % decrease |
---|---|
187.1269967 | 32.37806361 |
Bytes savings on English Wikipedia
editDay of change is in bold.
day of week | date | total bytes of images shipped | MB | total bytes shipped (GB) | Δ bytes shipped compared to previous day (GB) |
Tue | 08/08/16 | 1485023830511 | 1485023.831 | 1485.023831 | |
Wed | 09/08/16 | 1469288212438 | 1469288.212 | 1469.288212 | -15.73561807 |
Thur | 10/08/16 | 1482140100469 | 1482140.1 | 1482.1401 | 12.85188803 |
Fri | 11/08/16 | 1432380463648 | 1432380.464 | 1432.380464 | -49.75963682 |
Sat | 12/08/16 | 1384374343012 | 1384374.343 | 1384.374343 | -48.00612064 |
Sun | 13/08/16 | 1479537714179 | 1479537.714 | 1479.537714 | 95.16337117 |
Mon | 14/08/16 | 1585197209977 | 1585197.21 | 1585.19721 | 105.6594958 |
Tue | 15/08/16 | 1500168634240 | 1500168.634 | 1500.168634 | -85.02857574 |
Wed | 16/08/16 | 1403200226744 | 1403200.227 | 1403.200227 | -96.9684075 |
Thur | 17/08/16 | 1386034454782 | 1386034.455 | 1386.034455 | -17.16577196 |
Fri | 18/08/16 | 1315374266038 | 1315374.266 | 1315.374266 | -70.66018874 |
Sat | 19/08/16 | 839485726330 | 839485.7263 | 839.4857263 | -475.8885397 |
Sun | 20/08/16 | 750550486193 | 750550.4862 | 750.5504862 | -88.93524014 |
Mon | 21/08/16 | 855300935561 | 855300.9356 | 855.3009356 | 104.7504494 |
Tue | 22/08/16 | 756576719784 | 756576.7198 | 756.5767198 | -98.72421578 |
Wed | 23/08/16 | 744093746725 | 744093.7467 | 744.0937467 | -12.48297306 |
Thur | 24/08/16 | 727435780010 | 727435.78 | 727.43578 | -16.65796671 |
Fri | 25/08/16 | 747075525560 | 747075.5256 | 747.0755256 | 19.63974555 |
Sat | 26/08/16 | 700577850257 | 700577.8503 | 700.5778503 | -46.4976753 |
Sun | 27/08/16 | 743670756859 | 743670.7569 | 743.6707569 | 43.0929066 |
Mon | 28/08/16 | 834224283188 | 834224.2832 | 834.2242832 | 90.55352633 |
Period | Bytes shipped in GB |
---|---|
10th-16th | 10333.08668 |
20th-26th | 5420.51892 |
Bytes shipped decrease | % decrease |
---|---|
4912.567758 | 47.54211313 |
Impact on frontend performance
editMethod
editTo measure impact we took a look at data we had collected via real users via the NavigationTiming API over a 20 day period (10 days before and after the change) were taken of 3 wikis using the following query:
select
left(timestamp,8) as ts,
event_isAnon,
event_lazyLoadImages,
event_isHttp2,
event_loadEventEnd-event_responseStart as roughLoadTimeInitialLagExcluded,
event_responseEnd-event_responseStart as roughNetworkTimeInitialLagExcluded,
event_requestStart,
event_responseStart,
event_responseEnd,
event_firstPaint,
event_domInteractive,
event_domComplete,
event_loadEventStart,
event_loadEventEnd,
webHost,
event_originCountry,
event_mediaWikiVersion
from NavigationTiming_15485142
where
timestamp > '20160808'
and timestamp < '20160829'
and event_action = 'view'
and event_mobileMode = 'stable'
and event_namespaceId = 0
and event_redirectCount is null
and event_loadEventEnd is not null
and event_domComplete is not null
and event_domInteractive is not null
and event_responseStart is not null
and wiki in ('idwiki', 'enwiki', 'itwiki')
order by
wiki,
event_isAnon,
event_lazyLoadImages,
event_isHttp2,
ts
;
Results
edit
Impact on fully loaded time on Indonesian Wikipediaedit
|
Impact on fully loaded time on English Wikipediaedit
|