diff --git a/core/composer.json b/core/composer.json
index 78ef4f7..dde4d9c 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -149,6 +149,9 @@
   },
   "scripts": {
     "pre-autoload-dump": "Drupal\\Core\\Composer\\Composer::preAutoloadDump",
-    "post-autoload-dump": "Drupal\\Core\\Composer\\Composer::ensureHtaccess"
+    "post-autoload-dump": [
+      "Drupal\\Core\\Composer\\Composer::dumpDeploymentIdentifier",
+      "Drupal\\Core\\Composer\\Composer::ensureHtaccess"
+    ]
   }
 }
diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php
index 12164c3..c901f56 100644
--- a/core/lib/Drupal/Core/Composer/Composer.php
+++ b/core/lib/Drupal/Core/Composer/Composer.php
@@ -24,6 +24,9 @@ public static function preAutoloadDump(Event $event) {
     $composer = $event->getComposer();
     $package = $composer->getPackage();
     $autoload = $package->getAutoload();
+    $autoload['files'] = array_merge($autoload['files'], [
+      'vendor/DeploymentIdentifier.php'
+    ]);
     $autoload['classmap'] = array_merge($autoload['classmap'], array(
       'vendor/symfony/http-foundation/Request.php',
       'vendor/symfony/http-foundation/ParameterBag.php',
@@ -70,4 +73,46 @@ public static function ensureHtaccess(Event $event) {
     }
   }
 
+  /**
+   * Generates the DeploymentIdentifier class.
+   *
+   * This class has a method that will return an ID that matches a particular
+   * Composer installation. It is used to ensure that PHP opcode caches will be
+   * invalidated whenever the Composer dependencies change.
+   *
+   * @param \Composer\Script\Event $event
+   */
+  public static function dumpDeploymentIdentifier(Event $event) {
+    $vendor_dir = $event->getComposer()->getConfig()->get('vendor-dir');
+    $hash = $event->getComposer()->getLocker()->getLockData()['hash'];
+
+    $lines = <<<EOT
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Composer\DeploymentIdentifier.
+ */
+
+namespace Drupal\Core\Composer;
+
+/**
+ * Provides the deployment identifier created by Composer.
+ *
+ * @see \Drupal\Core\Composer\Composer::dumpDeploymentIdentifier().
+ */
+class DeploymentIdentifier implements DeploymentIdentifierInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIdentifier() {
+    return '$hash';
+  }
+
+}
+EOT;
+    file_put_contents($vendor_dir . '/DeploymentIdentifier.php', $lines . "\n");
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Composer/DeploymentIdentifierInterface.php b/core/lib/Drupal/Core/Composer/DeploymentIdentifierInterface.php
new file mode 100644
index 0000000..760294e
--- /dev/null
+++ b/core/lib/Drupal/Core/Composer/DeploymentIdentifierInterface.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Composer\DeploymentIdentifierInterface.
+ */
+
+namespace Drupal\Core\Composer;
+
+/**
+ * Interface DeploymentIdentifierInterface
+ *
+ * @package Drupal\Core\Composer
+ */
+interface DeploymentIdentifierInterface {
+
+  /**
+   * Returns the deployment identifier.
+   *
+   * @return string
+   *   The identifier.
+   */
+  public function getIdentifier();
+
+}
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 2ddc3ee..0f0d5db 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -11,6 +11,7 @@
 use Drupal\Component\Utility\Crypt;
 use Drupal\Component\Utility\Unicode;
 use Drupal\Component\Utility\UrlHelper;
+use Drupal\Core\Composer\DeploymentIdentifier;
 use Drupal\Core\Config\BootstrapConfigStorageFactory;
 use Drupal\Core\Config\NullStorage;
 use Drupal\Core\Database\Database;
@@ -975,8 +976,9 @@ protected function initializeSettings(Request $request) {
     if ($class_loader_class == get_class($this->classLoader)
         && Settings::get('class_loader_auto_detect', TRUE)
         && function_exists('apc_fetch')) {
+      $identifier = new DeploymentIdentifier();
       $prefix = Settings::getApcuPrefix('class_loader', $this->root);
-      $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix, $this->classLoader);
+      $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader($prefix . $identifier->getIdentifier(), $this->classLoader);
       $this->classLoader->unregister();
       $apc_loader->register();
       $this->classLoader = $apc_loader;
diff --git a/core/vendor/DeploymentIdentifier.php b/core/vendor/DeploymentIdentifier.php
new file mode 100644
index 0000000..afa5455
--- /dev/null
+++ b/core/vendor/DeploymentIdentifier.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Composer\DeploymentIdentifier.
+ */
+
+namespace Drupal\Core\Composer;
+
+/**
+ * Provides the deployment identifier created by Composer.
+ *
+ * @see \Drupal\Core\Composer\Composer::dumpDeploymentIdentifier().
+ */
+class DeploymentIdentifier implements DeploymentIdentifierInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIdentifier() {
+    return 'e6a3c80757f0e2a34ecc1cb9332cdab1';
+  }
+
+}
diff --git a/core/vendor/composer/autoload_files.php b/core/vendor/composer/autoload_files.php
index 693fec9..7c1f72d 100644
--- a/core/vendor/composer/autoload_files.php
+++ b/core/vendor/composer/autoload_files.php
@@ -10,4 +10,5 @@
     $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
     $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
     $baseDir . '/lib/Drupal.php',
+    $vendorDir . '/DeploymentIdentifier.php',
 );
