diff -upN include/bootstrap.inc include/bootstrap.inc
--- include/bootstrap.inc	2009-01-06 21:19:00.000000000 +0100
+++ include/bootstrap.inc	2009-01-11 00:34:00.000000000 +0100
@@ -286,7 +286,7 @@ function drupal_valid_http_host() {
  * session name correctly.
  */
 function conf_init() {
-  global $base_url, $base_path, $base_root;
+  global $base_url, $base_path, $base_root, $base_url_mirror;
 
   // Export the following settings.php variables to the global namespace
   global $db_url, $db_prefix, $cookie_domain, $conf, $installed_profile, $update_free_access;
diff -upN include/common.inc include/common.inc
--- include/common.inc	2009-01-06 21:19:00.000000000 +0100
+++ include/common.inc	2009-01-11 11:37:10.000000000 +0100
@@ -1784,6 +1784,8 @@ function drupal_add_css($path = NULL, $t
  *   A string of XHTML CSS tags.
  */
 function drupal_get_css($css = NULL) {
+  global $base_url_mirror;
+
   $output = '';
   if (!isset($css)) {
     $css = drupal_add_css();
@@ -1826,15 +1828,15 @@ function drupal_get_css($css = NULL) {
             // If a CSS file is not to be preprocessed and it's a module CSS file, it needs to *always* appear at the *top*,
             // regardless of whether preprocessing is on or off.
             if (!$preprocess && $type == 'module') {
-              $no_module_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
+              $no_module_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. $base_url_mirror[rand(0, count($base_url_mirror))] . base_path() . $file . $query_string .'" />'."\n";
             }
             // If a CSS file is not to be preprocessed and it's a theme CSS file, it needs to *always* appear at the *bottom*,
             // regardless of whether preprocessing is on or off.
             else if (!$preprocess && $type == 'theme') {
-              $no_theme_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
+              $no_theme_preprocess .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. $base_url_mirror[rand(0, count($base_url_mirror))] . base_path() . $file . $query_string .'" />'."\n";
             }
             else {
-              $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $file . $query_string .'" />'."\n";
+              $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. $base_url_mirror[rand(0, count($base_url_mirror))] . base_path() . $file . $query_string .'" />'."\n";
             }
           }
         }
@@ -1844,7 +1846,7 @@ function drupal_get_css($css = NULL) {
     if ($is_writable && $preprocess_css) {
       $filename = md5(serialize($types) . $query_string) .'.css';
       $preprocess_file = drupal_build_css_cache($types, $filename);
-      $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. base_path() . $preprocess_file .'" />'."\n";
+      $output .= '<link type="text/css" rel="stylesheet" media="'. $media .'" href="'. $base_url_mirror[rand(0, count($base_url_mirror))] . base_path() . $preprocess_file .'" />'."\n";
     }
   }
 
@@ -2127,6 +2129,8 @@ function drupal_add_js($data = NULL, $ty
  *   All JavaScript code segments and includes for the scope as HTML tags.
  */
 function drupal_get_js($scope = 'header', $javascript = NULL) {
+  global $base_url_mirror;
+
   if ((!defined('MAINTENANCE_MODE') || MAINTENANCE_MODE != 'update') && function_exists('locale_update_js_files')) {
     locale_update_js_files();
   }
@@ -2179,7 +2183,7 @@ function drupal_get_js($scope = 'header'
         // Additionally, go through any remaining scripts if JS preprocessing is on and output the non-cached ones.
         foreach ($data as $path => $info) {
           if (!$info['preprocess'] || !$is_writable || !$preprocess_js) {
-            $no_preprocess[$type] .= '<script type="text/javascript"'. ($info['defer'] ? ' defer="defer"' : '') .' src="'. base_path() . $path . ($info['cache'] ? $query_string : '?'. time()) ."\"></script>\n";
+            $no_preprocess[$type] .= '<script type="text/javascript"'. ($info['defer'] ? ' defer="defer"' : '') .' src="'. $base_url_mirror[rand(0, count($base_url_mirror))] . base_path() . $path . ($info['cache'] ? $query_string : '?'. time()) ."\"></script>\n";
           }
           else {
             $files[$path] = $info;
@@ -2192,7 +2196,7 @@ function drupal_get_js($scope = 'header'
   if ($is_writable && $preprocess_js && count($files) > 0) {
     $filename = md5(serialize($files) . $query_string) .'.js';
     $preprocess_file = drupal_build_js_cache($files, $filename);
-    $preprocessed .= '<script type="text/javascript" src="'. base_path() . $preprocess_file .'"></script>'."\n";
+    $preprocessed .= '<script type="text/javascript" src="'. $base_url_mirror[rand(0, count($base_url_mirror))] . base_path() . $preprocess_file .'"></script>'."\n";
   }
 
   // Keep the order of JS files consistent as some are preprocessed and others are not.
