diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php
index 2d773dc..829a885 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityStorage.php
@@ -138,6 +138,15 @@ public function loadMultiple(array $ids = NULL) {
     // array for later comparison with the entity cache, or FALSE if no $ids
     // were passed.
     $passed_ids = !empty($ids) ? array_flip($ids) : FALSE;
+    // Try to load entities from the static cache, if the entity type supports
+    // static caching.
+    if ($this->cache && $ids) {
+      $entities += $this->cacheGet($ids);
+      // If any entities were loaded, remove them from the ids still to load.
+      if ($passed_ids) {
+        $ids = array_keys(array_diff_key($passed_ids, $entities));
+      }
+    }
 
     // Load any remaining entities. This is the case if $ids is set to NULL (so
     // we load all entities).
@@ -153,6 +162,13 @@ public function loadMultiple(array $ids = NULL) {
       $entities += $queried_entities;
     }
 
+    if ($this->cache) {
+      // Add entities to the cache.
+      if (!empty($queried_entities)) {
+        $this->cacheSet($queried_entities);
+      }
+    }
+
     // Ensure that the returned array is ordered the same as the original
     // $ids array if this was passed in and remove any invalid ids.
     if ($passed_ids) {
@@ -215,7 +231,7 @@ public static function getIDFromConfigName($config_name, $config_prefix) {
    * See Drupal\comment\CommentStorage::buildQuery() or
    * Drupal\taxonomy\TermStorage::buildQuery() for examples.
    *
-   * @param $ids
+   * @param array|null $ids
    *   An array of entity IDs, or NULL to load all entities.
    * @param $revision_id
    *   The ID of the revision to load, or FALSE if this query is asking for the
@@ -301,6 +317,9 @@ public function delete(array $entities) {
       $config->delete();
     }
 
+    // Reset the cache as soon as the changes have been applied.
+    $this->resetCache(array_keys($entities));
+
     $entity_class::postDelete($this, $entities);
     foreach ($entities as $entity) {
       $this->invokeHook('delete', $entity);
@@ -356,6 +375,8 @@ public function save(EntityInterface $entity) {
       // - The object needs to be renamed/copied in ConfigFactory and reloaded.
       // - All instances of the object need to be renamed.
       $config = $this->configFactory->rename($prefix . $id, $prefix . $entity->id());
+      // Reset the cache for the old entity.
+      $this->resetCache(array($id));
     }
 
     // Retrieve the desired properties and set them in config.
@@ -366,6 +387,7 @@ public function save(EntityInterface $entity) {
     if (!$config->isNew()) {
       $return = SAVED_UPDATED;
       $config->save();
+      $this->resetCache(array($entity->id()));
       $entity->postSave($this, TRUE);
       $this->invokeHook('update', $entity);
     }
diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
index 3383391..c419036 100644
--- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
+++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php
@@ -1601,6 +1601,9 @@ protected function drupalPostForm($path, $edit, $submit, array $options = array(
           $verbose .= '<hr />' . $out;
 
           $this->verbose($verbose);
+
+          $this->rebuildContainer();
+
           return $out;
         }
       }
@@ -1866,7 +1869,7 @@ protected function drupalProcessAjaxResponse($content, array $ajax_response, arr
    * @see url()
    */
   protected function drupalPost($path, $accept, array $post, $options = array()) {
-    return $this->curlExec(array(
+    $return = $this->curlExec(array(
       CURLOPT_URL => url($path, $options + array('absolute' => TRUE)),
       CURLOPT_POST => TRUE,
       CURLOPT_POSTFIELDS => $this->serializePostValues($post),
@@ -1875,6 +1878,10 @@ protected function drupalPost($path, $accept, array $post, $options = array()) {
         'Content-Type: application/x-www-form-urlencoded',
       ),
     ));
+
+    $this->rebuildContainer();
+
+    return $return;
   }
 
   /**
