diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
index d886224..48cdf0b 100644
--- a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
@@ -139,7 +139,7 @@ protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langco
     // type configuration. The isset() checks below are necessary because
     // 'default' is not an actual view mode.
     $view_mode_is_cacheable = !isset($this->viewModesInfo[$view_mode]) || (isset($this->viewModesInfo[$view_mode]) && $this->viewModesInfo[$view_mode]['cache']);
-    if ($view_mode_is_cacheable && !$entity->isNew() && !isset($entity->in_preview) && $this->entityInfo->isRenderCacheable()) {
+    if ($view_mode_is_cacheable && !$entity->isNew() && $entity->isDefaultRevision() && $this->entityInfo->isRenderCacheable()) {
       $return['#cache'] = array(
         'keys' => array('entity_view', $this->entityType, $entity->id(), $view_mode),
         'granularity' => DRUPAL_CACHE_PER_ROLE,
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index df12f82..01bfa21 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -247,7 +247,6 @@ function comment_field_instance_create(FieldInstanceInterface $instance) {
  */
 function comment_field_instance_update(FieldInstanceInterface $instance) {
   if ($instance->getType() == 'comment') {
-    \Drupal::entityManager()->getViewBuilder($instance->entity_type)->resetCache();
     // Comment field settings also affects the rendering of *comment* entities,
     // not only the *commented* entities.
     \Drupal::entityManager()->getViewBuilder('comment')->resetCache();
diff --git a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
index 62c9e56..45563f5 100644
--- a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
@@ -35,7 +35,6 @@
  *   uri_callback = "comment_uri",
  *   fieldable = TRUE,
  *   translatable = TRUE,
- *   render_cache = FALSE,
  *   entity_keys = {
  *     "id" = "cid",
  *     "bundle" = "field_id",
diff --git a/core/modules/node/lib/Drupal/node/Entity/Node.php b/core/modules/node/lib/Drupal/node/Entity/Node.php
index fee4c18..830504a 100644
--- a/core/modules/node/lib/Drupal/node/Entity/Node.php
+++ b/core/modules/node/lib/Drupal/node/Entity/Node.php
@@ -40,7 +40,6 @@
  *   uri_callback = "node_uri",
  *   fieldable = TRUE,
  *   translatable = TRUE,
- *   render_cache = FALSE,
  *   entity_keys = {
  *     "id" = "nid",
  *     "revision" = "vid",
diff --git a/core/modules/node/lib/Drupal/node/Entity/NodeType.php b/core/modules/node/lib/Drupal/node/Entity/NodeType.php
index cec3461..c08bd7e 100644
--- a/core/modules/node/lib/Drupal/node/Entity/NodeType.php
+++ b/core/modules/node/lib/Drupal/node/Entity/NodeType.php
@@ -194,6 +194,9 @@ public function postSave(EntityStorageControllerInterface $storage_controller, $
     else {
       // Invalidate the cache tag of the updated node type only.
       cache()->invalidateTags(array('node_type' => $this->id()));
+
+      // Invalidate the render cache for all nodes.
+      \Drupal::entityManager()->getViewBuilder('node')->resetCache();
     }
   }
 
diff --git a/core/modules/node/lib/Drupal/node/NodeViewBuilder.php b/core/modules/node/lib/Drupal/node/NodeViewBuilder.php
index eda9b4c..9e0e494 100644
--- a/core/modules/node/lib/Drupal/node/NodeViewBuilder.php
+++ b/core/modules/node/lib/Drupal/node/NodeViewBuilder.php
@@ -59,6 +59,20 @@ public function buildContent(array $entities, array $displays, $view_mode, $lang
   }
 
   /**
+   * {@inheritdoc}
+   */
+  protected function getBuildDefaults(EntityInterface $entity, $view_mode, $langcode) {
+    $defaults = parent::getBuildDefaults($entity, $view_mode, $langcode);
+
+    // Don't cache nodes that are in 'preview' mode.
+    if (isset($defaults['#cache']) && isset($entity->in_preview)) {
+      unset($defaults['#cache']);
+    }
+
+    return $defaults;
+  }
+
+  /**
    * #post_render_cache callback; replaces the placeholder with node links.
    *
    * Renders the links on a node.
diff --git a/core/modules/node/lib/Drupal/node/Tests/Views/RowPluginTest.php b/core/modules/node/lib/Drupal/node/Tests/Views/RowPluginTest.php
index e2b4f45..33b8ba7 100644
--- a/core/modules/node/lib/Drupal/node/Tests/Views/RowPluginTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/Views/RowPluginTest.php
@@ -134,6 +134,7 @@ public function testRowPlugin() {
 
     // Test with links disabled.
     $view->rowPlugin->options['links'] = FALSE;
+    \Drupal::entityManager()->getViewBuilder('node')->resetCache();
     $output = $view->preview();
     $output = drupal_render($output);
     $this->drupalSetContent($output);
@@ -143,6 +144,7 @@ public function testRowPlugin() {
 
     // Test with links enabled.
     $view->rowPlugin->options['links'] = TRUE;
+    \Drupal::entityManager()->getViewBuilder('node')->resetCache();
     $output = $view->preview();
     $output = drupal_render($output);
     $this->drupalSetContent($output);
diff --git a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
index f00b5ba..4854c63 100644
--- a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php
@@ -65,6 +65,7 @@ function testTimeZoneHandling() {
 
     // Set time zone to Los Angeles time.
     $config->set('timezone.default', 'America/Los_Angeles')->save();
+    \Drupal::entityManager()->getViewBuilder('node')->resetCache(array($node1, $node2));
 
     // Confirm date format and time zone.
     $this->drupalGet('node/' . $node1->id());
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php b/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php
index fa88502..b14d213 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php
@@ -118,6 +118,7 @@ function testPictureOnNodeComment() {
       ->set('features.node_user_picture', FALSE)
       ->set('features.comment_user_picture', FALSE)
       ->save();
+    \Drupal::entityManager()->getViewBuilder('comment')->resetCache();
 
     $this->drupalGet('node/' . $node->id());
     $this->assertNoRaw(file_uri_target($file->getFileUri()), 'User picture not found on node and comment.');
