diff --git a/domain_access/src/DomainAccessManager.php b/domain_access/src/DomainAccessManager.php
index 74dab82b..7e7b2c62 100644
--- a/domain_access/src/DomainAccessManager.php
+++ b/domain_access/src/DomainAccessManager.php
@@ -46,6 +46,8 @@ class DomainAccessManager implements DomainAccessManagerInterface {
    */
   protected $domainStorage;
 
+  private static $staticCache = [];
+
   /**
    * Constructs a DomainAccessManager object.
    *
@@ -67,24 +69,29 @@ class DomainAccessManager implements DomainAccessManagerInterface {
    * {@inheritdoc}
    */
   public static function getAccessValues(FieldableEntityInterface $entity, $field_name = DomainAccessManagerInterface::DOMAIN_ACCESS_FIELD) {
-    // @TODO: static cache.
+    if (isset(self::$staticCache[$entity->getEntityTypeId()][$entity->id()][$field_name])) {
+      return self::$staticCache[$entity->getEntityTypeId()][$entity->id()][$field_name];
+    }
     $list = [];
-    // @TODO In tests, $entity is returning NULL.
     if (is_null($entity)) {
       return $list;
     }
+
     // Get the values of an entity.
     $values = $entity->hasField($field_name) ? $entity->get($field_name) : NULL;
+    if ($values === []) {
+      self::$staticCache[$entity->getEntityTypeId()][$entity->id()][$field_name] = $list;
+      return $list;
+    }
     // Must be at least one item.
-    if (!empty($values)) {
-      foreach ($values as $item) {
-        if ($target = $item->getValue()) {
-          if ($domain = \Drupal::entityTypeManager()->getStorage('domain')->load($target['target_id'])) {
-            $list[$domain->id()] = $domain->getDomainId();
-          }
+    foreach ($values as $item) {
+      if ($target = $item->getValue()) {
+        if ($domain = \Drupal::entityTypeManager()->getStorage('domain')->load($target['target_id'])) {
+          $list[$domain->id()] = $domain->getDomainId();
         }
       }
     }
+    self::$staticCache[$entity->getEntityTypeId()][$entity->id()][$field_name] = $list;
     return $list;
   }
 
@@ -101,7 +108,7 @@ class DomainAccessManager implements DomainAccessManagerInterface {
   public function checkEntityAccess(FieldableEntityInterface $entity, AccountInterface $account) {
     $entity_domains = $this->getAccessValues($entity);
     $user = \Drupal::entityTypeManager()->getStorage('user')->load($account->id());
-    if (!empty($this->getAllValue($user)) && !empty($entity_domains)) {
+    if ($this->getAllValue($user) !== null && !empty($entity_domains)) {
       return TRUE;
     }
     $user_domains = $this->getAccessValues($user);
