diff --git a/src/EventSubscriber/CurrentUserContext.php b/src/EventSubscriber/CurrentUserContext.php
index 89833db..4f11bd5 100644
--- a/src/EventSubscriber/CurrentUserContext.php
+++ b/src/EventSubscriber/CurrentUserContext.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\page_manager\EventSubscriber;
 
+use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\page_manager\Event\PageManagerContextEvent;
@@ -62,6 +63,9 @@ class CurrentUserContext implements EventSubscriberInterface {
 
     $context = new Context(new ContextDefinition('entity:user', $this->t('Current user')));
     $context->setContextValue($current_user);
+    $cacheability = new CacheableMetadata();
+    $cacheability->setCacheContexts(['user']);
+    $context->addCacheableDependency($cacheability);
     $event->getPageExecutable()->addContext('current_user', $context);
   }
 
diff --git a/src/EventSubscriber/RouteParamContext.php b/src/EventSubscriber/RouteParamContext.php
index b6acdee..ea19129 100644
--- a/src/EventSubscriber/RouteParamContext.php
+++ b/src/EventSubscriber/RouteParamContext.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\page_manager\EventSubscriber;
 
+use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Plugin\Context\ContextDefinition;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\page_manager\Event\PageManagerContextEvent;
@@ -70,9 +71,12 @@ class RouteParamContext implements EventSubscriberInterface {
         }
 
         $context_name = $this->t('{@name} from route', ['@name' => $route_context_name]);
-        $context = new Context(new ContextDefinition($route_context['type'], $context_name));
+        $context = new Context(new ContextDefinition($route_context['type'], $context_name, FALSE));
         if ($request->attributes->has($route_context_name)) {
           $context->setContextValue($request->attributes->get($route_context_name));
+          $cacheability = new CacheableMetadata();
+          $cacheability->setCacheContexts(['route']);
+          $context->addCacheableDependency($cacheability);
         }
         else {
           // @todo Find a way to add in a fake value for configuration.
diff --git a/src/Tests/PageNodeSelectionTest.php b/src/Tests/PageNodeSelectionTest.php
index 109d8e5..94b26e0 100644
--- a/src/Tests/PageNodeSelectionTest.php
+++ b/src/Tests/PageNodeSelectionTest.php
@@ -39,6 +39,7 @@ class PageNodeSelectionTest extends WebTestBase {
     // Create two nodes, and view their pages.
     $node1 = $this->drupalCreateNode(['type' => 'page']);
     $node2 = $this->drupalCreateNode(['type' => 'article']);
+    $node3 = $this->drupalCreateNode(['type' => 'article']);
     $this->drupalGet('node/' . $node1->id());
     $this->assertResponse(200);
     $this->assertText($node1->label());
@@ -105,6 +106,10 @@ class PageNodeSelectionTest extends WebTestBase {
     $this->assertTitle($node2->label() . ' | Drupal');
     $this->assertText($node2->body->value);
 
+    // Test cacheability metadata.
+    $this->drupalGet('node/' . $node3->id());
+    $this->assertNoText($node2->label());
+
   }
 
 }
