diff --git a/core/lib/Drupal/Core/Update/UpdateKernel.php b/core/lib/Drupal/Core/Update/UpdateKernel.php
index 6c5de73..1cdf114 100755
--- a/core/lib/Drupal/Core/Update/UpdateKernel.php
+++ b/core/lib/Drupal/Core/Update/UpdateKernel.php
@@ -29,6 +29,16 @@ class UpdateKernel extends DrupalKernel {
   /**
    * {@inheritdoc}
    */
+  protected function initializeContainer() {
+    // Always force a container rebuild.
+    $this->containerNeedsRebuild = TRUE;
+    $container = parent::initializeContainer();
+    return $container;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
     try {
       static::bootEnvironment();
diff --git a/core/lib/Drupal/Core/Updater/UpdaterServiceProvider.php b/core/lib/Drupal/Core/Updater/UpdaterServiceProvider.php
new file mode 100644
index 0000000..5f08874
--- /dev/null
+++ b/core/lib/Drupal/Core/Updater/UpdaterServiceProvider.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Updater\UpdaterServiceProvider.
+ */
+
+namespace Drupal\Core\Updater;
+
+use Drupal\Core\DependencyInjection\ContainerBuilder;
+use Drupal\Core\DependencyInjection\ServiceProviderInterface;
+use Drupal\Core\DependencyInjection\ServiceModifierInterface;
+use Symfony\Component\DependencyInjection\Definition;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Provides a service provider for the updater environment.
+ */
+class UpdaterServiceProvider implements ServiceProviderInterface, ServiceModifierInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function register(ContainerBuilder $container) {
+    $definition = new Definition('Drupal\Core\Cache\NullBackend', ['null']);
+    $container->setDefinition('cache.backend.null', $definition);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function alter(ContainerBuilder $container) {
+    $definition = $container->getDefinition('asset.resolver');
+    $argument = new Reference('cache.backend.null');
+    $definition->replaceArgument(5, $argument);
+  }
+
+}
diff --git a/core/modules/system/src/Tests/Update/UpdatePathTestBase.php b/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
index fc8d4c3..b5e8784 100644
--- a/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
+++ b/core/modules/system/src/Tests/Update/UpdatePathTestBase.php
@@ -243,6 +243,7 @@ protected function runUpdates() {
     ]]]);
 
     $this->drupalGet($this->updateUrl);
+    $this->doPreUpdateTests();
     $this->clickLink(t('Continue'));
 
     // Run the update hooks.
@@ -266,4 +267,12 @@ protected function runUpdates() {
     $this->assertFalse(\Drupal::service('entity.definition_update_manager')->needsUpdates(), 'After all updates ran, entity schema is up to date.');
   }
 
+  /**
+   * Tests update.php before tests are run.
+   */
+  protected function doPreUpdateTests() {
+    // No-op. Tests wishing to do tests at the update.php URL before updates are
+    // run can override this method and implement their required tests.
+  }
+
 }
diff --git a/core/modules/system/src/Tests/Update/UpdatePathTestJavaScriptTest.php b/core/modules/system/src/Tests/Update/UpdatePathTestJavaScriptTest.php
new file mode 100644
index 0000000..74dc424
--- /dev/null
+++ b/core/modules/system/src/Tests/Update/UpdatePathTestJavaScriptTest.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\system\Tests\Update\UpdatePathTestJavaScriptTest.php
+ */
+
+namespace Drupal\system\Tests\Update;
+
+/**
+ * Tests the presence of JavaScript at update.php.
+ *
+ * @group Update
+ */
+class UpdatePathTestJavaScriptTest extends UpdatePathTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setDatabaseDumpFiles() {
+    $this->databaseDumpFiles = [
+      __DIR__ . '/../../../tests/fixtures/update/drupal-8.bare.standard.php.gz',
+       __DIR__ . '/../../../tests/fixtures/update/drupal-8.update-test-aggregation-disabled.php',
+    ];
+  }
+
+  /**
+   * Test JavaScript loading at update.php.
+   *
+   * @see ::doPreUpdateTests
+   */
+  public function testJavaScriptLoading() {
+    $this->runUpdates();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function doPreUpdateTests() {
+    $this->assertRaw('core/misc/drupalSettingsLoader.js', 'Drupal settings found.');
+  }
+
+}
diff --git a/core/modules/system/tests/fixtures/update/drupal-8.update-test-aggregation-disabled.php b/core/modules/system/tests/fixtures/update/drupal-8.update-test-aggregation-disabled.php
new file mode 100644
index 0000000..5a6bed6
--- /dev/null
+++ b/core/modules/system/tests/fixtures/update/drupal-8.update-test-aggregation-disabled.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * @file
+ * Partial database to disable aggregation.
+ */
+
+use Drupal\Core\Database\Database;
+
+$connection = Database::getConnection();
+
+// Update cache settings.
+$cache_settings = $connection->select('config')
+  ->fields('config', ['data'])
+  ->condition('collection', '')
+  ->condition('name', 'system.performance')
+  ->execute()
+  ->fetchField();
+$cache_settings = unserialize($cache_settings);
+$cache_settings['js']['preprocess'] = FALSE;
+$connection->update('config')
+  ->fields([
+    'data' => serialize($cache_settings),
+  ])
+  ->condition('collection', '')
+  ->condition('name', 'system.performance')
+  ->execute();
diff --git a/update.php b/update.php
index 5222b96..41998c2 100755
--- a/update.php
+++ b/update.php
@@ -13,6 +13,8 @@
 
 $autoloader = require_once 'autoload.php';
 
+$GLOBALS['conf']['container_service_providers']['UpdaterServiceProvider'] = 'Drupal\Core\Updater\UpdaterServiceProvider';
+
 $kernel = new UpdateKernel('prod', $autoloader);
 $request = Request::createFromGlobals();
 
