diff --git a/core/modules/history/history.module b/core/modules/history/history.module
index e4dc165..61def3e 100644
--- a/core/modules/history/history.module
+++ b/core/modules/history/history.module
@@ -134,12 +134,15 @@ function history_cron() {
  */
 function history_node_view_alter(array &$build, EntityInterface $node, EntityViewDisplayInterface $display) {
   // Update the history table, stating that this user viewed this node.
-  if (($display->getOriginalMode() === 'full') && \Drupal::currentUser()->isAuthenticated()) {
-    // When the window's "load" event is triggered, mark the node as read.
-    // This still allows for Drupal behaviors (which are triggered on the
-    // "DOMContentReady" event) to add "new" and "updated" indicators.
-    $build['#attached']['library'][] = 'history/mark-as-read';
-    $build['#attached']['drupalSettings']['history']['nodesToMarkAsRead'][$node->id()] = TRUE;
+  if ($display->getOriginalMode() === 'full') {
+    $build['#cache']['contexts'][] = 'user.roles:authenticated';
+    if (\Drupal::currentUser()->isAuthenticated()) {
+      // When the window's "load" event is triggered, mark the node as read.
+      // This still allows for Drupal behaviors (which are triggered on the
+      // "DOMContentReady" event) to add "new" and "updated" indicators.
+      $build['#attached']['library'][] = 'history/mark-as-read';
+      $build['#attached']['drupalSettings']['history']['nodesToMarkAsRead'][$node->id()] = TRUE;
+    }
   }
 
 }
diff --git a/core/modules/history/src/Tests/HistoryTest.php b/core/modules/history/src/Tests/HistoryTest.php
index 62693cc..3340f1a 100644
--- a/core/modules/history/src/Tests/HistoryTest.php
+++ b/core/modules/history/src/Tests/HistoryTest.php
@@ -117,6 +117,7 @@ function testHistory() {
 
     // View the node.
     $this->drupalGet('node/' . $nid);
+    $this->assertCacheContext('user.roles:authenticated');
     // JavaScript present to record the node read.
     $settings = $this->getDrupalSettings();
     $libraries = explode(',', $settings['ajaxPageState']['libraries']);
