From: Ori Livneh Date: Tue, 29 Oct 2013 08:35:05 +0000 (-0700) Subject: mw.loader.store: do one eval per batch, rather than one per module X-Git-Tag: 1.31.0-rc.0~18348^2 X-Git-Url: http://git.cyclocoop.org///%22%40url%40//%22?a=commitdiff_plain;h=fa3e3b4e4f808ed99fa7359e467b5fb126f9a8ad;p=lhc%2Fweb%2Fwiklou.git mw.loader.store: do one eval per batch, rather than one per module Concatenating module implementations and calling $.globalEval on the result is reproducibly faster for me than calling $.globalEval for each module. Change-Id: I70e5bcedb43cd1331720a8e5e6c52cfeabb41ab7 --- diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js index acda5d655a..dfb90ccd9c 100644 --- a/resources/mediawiki/mediawiki.js +++ b/resources/mediawiki/mediawiki.js @@ -1227,7 +1227,7 @@ var mw = ( function ( $, undefined ) { */ work: function () { var reqBase, splits, maxQueryLength, q, b, bSource, bGroup, bSourceGroup, - source, group, g, i, modules, maxVersion, sourceLoadScript, + source, concatSource, group, g, i, modules, maxVersion, sourceLoadScript, currReqBase, currReqBaseLength, moduleMap, l, lastDotIndex, prefix, suffix, bytesAdded, async; @@ -1256,14 +1256,16 @@ var mw = ( function ( $, undefined ) { mw.loader.store.init(); if ( mw.loader.store.enabled ) { + concatSource = []; batch = $.grep( batch, function ( module ) { var source = mw.loader.store.get( module ); if ( source ) { - $.globalEval( source ); - return false; // Don't fetch + concatSource.push( source ); + return false; } - return true; // Fetch + return true; } ); + $.globalEval( concatSource.join( ';' ) ); } // Early exit if there's nothing to load...