Implemented request grouping on the client.
authorTrevor Parscal <tparscal@users.mediawiki.org>
Mon, 20 Sep 2010 23:32:28 +0000 (23:32 +0000)
committerTrevor Parscal <tparscal@users.mediawiki.org>
Mon, 20 Sep 2010 23:32:28 +0000 (23:32 +0000)
resources/mediawiki/mediawiki.js

index 14be5c7..3d94d2c 100644 (file)
@@ -502,16 +502,27 @@ window.mediaWiki = new ( function( $ ) {
                                                );
                                        }
                                } else {
-                                       // Calculate the highest timestamp
-                                       var version = 0;
+                                       // Split into groups
+                                       var groups = {};
                                        for ( var b = 0; b < batch.length; b++ ) {
-                                               if ( registry[batch[b]].version > version ) {
-                                                       version = registry[batch[b]].version;
+                                               var group = registry[batch[b]].group;
+                                               if ( !( group in groups ) ) {
+                                                       groups[group] = [];
                                                }
+                                               groups[group][groups[group].length] = batch[b];
+                                       }
+                                       for ( var group in groups ) {
+                                               // Calculate the highest timestamp
+                                               var version = 0;
+                                               for ( var g = 0; g < groups[group].length; g++ ) {
+                                                       if ( registry[groups[group][g]].version > version ) {
+                                                               version = registry[groups[group][g]].version;
+                                                       }
+                                               }
+                                               requests[requests.length] = $.extend(
+                                                       { 'modules': groups[group].join( '|' ), 'version': formatVersionNumber( version ) }, base
+                                               );
                                        }
-                                       requests[requests.length] = $.extend(
-                                               { 'modules': batch.join( '|' ), 'version': formatVersionNumber( version ) }, base
-                                       );
                                }
                                // Clear the batch - this MUST happen before we append the script element to the body or it's
                                // possible that the script will be locally cached, instantly load, and work the batch again,