production data collected on 05.05.2015
Control | Current | Sequential | |
---|---|---|---|
page-start to video-start | --- | --- | --- |
page-start to video-init | --- | --- | --- |
page-start to script-start | --- | --- | --- |
script-start to video-init | --- | --- | --- |
video-init to video-start | --- | --- | --- |
An overview of collected data used to identify issues affecting video performance. Download this application as a package and run locally.
Credit Justin Reade, Hector Reyes, Chris DePauw.
Define video and advertisement values, then 'play' or visit urls where same content is seen in foxsports.com. Similar to the neodigital reference player, but with added control to define interactive unit and video id.
Scripting added to the application is used to measure important video time sequences. 'Yields a consistent data for various form factors, environments, browsers, etc...
Added to document head:
<head>
<script type="text/javascript">
var pagestartms = Date.now();
</script>
Added at bottom of document, above our app.js script element:
<script type="text/javascript">
var scriptstartms = Date.now();
</script>
<script src="${path:getEx...app.full.js...</script>
Added to occur at 'platformPlayer' init method:
var videoinitms = Date.now();
Added to occur at 'platformPlayer' init completion where video play starts:
var videostartms = Date.now();
Data is printed to console in JSON format, for example:
{
"browserName" : "Chrome",
"browserFullVersion" : "41.0.2272.89",
"browserMajorVersion" : "41",
"navigatorappName" : "Netscape",
"navigatoruserAgent" : "Mozilla/5.0 (Maci ... ",
"whArr" : [1750, 376],
"fullURL" : "http%3A%2F%2Fchris.foxsports ... ",
"releaseURL" : "http%3A%2F%2Flink.theplat ... ",
"isCached" : true,
"strategy" : "current",
"err" : "null",
"page-load to video-start" : 33.34,
"page-load to video-init" : 26.57,
"page-load to script-start" : 25.64,
"script-start to video-init" : 0.93,
"video-init to video-start" : 6.77
}
We scripted a new initialization strategy and tested it alongside the current strategy.
Current strategy initializes many definitions simultanaeously. Before platformPlayer is 'done', stacks generated by GlobalNavigation, Analytics and others appear on the event loop in uncontrolled ways.
viewfoxbox.init();
Social.init();
ModuleLoader.init();
// ModuleLoader will 'init' more modules.
// loops an array of modules calling 'init' on each.
adManager.init();
platformPlayer.init();
Analytitics.init();
Transitions.init();
autocomplete.init();
GlobalNavigqtion.init();
InjectorScriptRunner.init();
many non-video-related requests are made during video init
Sequential strategy initializes definitions in sequence. Until platformPlayer is 'done' (or expires) no other initialization begins.
var startms = Date.now();
platformPlayer.init(opts, function (err, res) {
if (err) {
console.warn('error loading player');
} else {
console.log('finish loading player', Date.now() - startms);
}
loadnext();
}, 1000); // expire, 1 second
mostly video-related requests are made using a sequential strategy
Local strategy initializes a the video to this page, which doesn't have much else.
¿Auto strategy? use the packaged version of this application to run many automated tests using a headless browser.
Filters below are applied to this collection of JSON data.
Control | Current | Sequential | |
---|---|---|---|
page-start to video-start | --- | --- | --- |
page-start to video-init | --- | --- | --- |
page-start to script-start | --- | --- | --- |
script-start to video-init | --- | --- | --- |
video-init to video-start | --- | --- | --- |