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;
+    }
   }
 
 }
