Reading/Web/Lazy loading of images on all wikis
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
[edit]Comparison 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
[edit]Our 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
[edit]Bytes savings on Indonesian Wikipedia
[edit]Day 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
[edit]Day 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
[edit]Method
[edit]To 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 Wikipedia[edit]
|
Impact on fully loaded time on English Wikipedia[edit]
|