diff --git a/src/Plugin/views/filter/EntityReferenceFilterViewResult.php b/src/Plugin/views/filter/EntityReferenceFilterViewResult.php
index a6aec39..67408ee 100644
--- a/src/Plugin/views/filter/EntityReferenceFilterViewResult.php
+++ b/src/Plugin/views/filter/EntityReferenceFilterViewResult.php
@@ -3,6 +3,7 @@
 namespace Drupal\entityreference_filter\Plugin\views\filter;
 
 use Drupal\Component\Utility\Html;
+use Drupal\Core\Cache\Cache;
 use Drupal\Core\Config\Entity\ConfigEntityStorageInterface;
 use Drupal\Core\Entity\ContentEntityTypeInterface;
 use Drupal\Core\Entity\EntityRepositoryInterface;
@@ -721,31 +722,53 @@ class EntityReferenceFilterViewResult extends ManyToOne {
    * {@inheritdoc}
    */
   public function getCacheTags() {
+    $tags = parent::getCacheTags();
     // Adds entityreference view base entity as cache tag.
     $reference_display = $this->options['reference_display'] ?? FALSE;
 
     if ($reference_display) {
-      [$view_name] = explode(':', $reference_display);
+      [$view_name, $display_id] = explode(':', $reference_display);
       /** @var \Drupal\views\Entity\View $config */
       $config = $this->viewStorage->load($view_name);
       if ($config && $config instanceof View) {
+        $base_table_view = $config->get('base_table');
         $definitions = $this->entityTypeManager->getDefinitions();
+        // Add base entity type tags.
         foreach ($definitions as $definition) {
-          $base_table_view = $config->get('base_table');
           if ($definition instanceof ContentEntityTypeInterface) {
             $base_table_entity = $definition->getDataTable();
             if (!$base_table_entity) {
               $base_table_entity = $definition->getBaseTable();
             }
             if ($base_table_entity === $base_table_view) {
-              return $definition->getListCacheTags();
+              $tags = Cache::mergeTags($tags, $definition->getListCacheTags());
+            }
+          }
+        }
+        // Add relationship entity type tags.
+        $view_display_specific = $config->getDisplay($display_id);
+        $view_display_default = $config->getDisplay('default');
+        $relationships = $view_display_specific['display_options']['relationships']
+          ?? $view_display_default['display_options']['relationships']
+          ?? [];
+        foreach ($relationships as $relationship) {
+          if (isset($relationship['entity_type']) && isset($definitions[$relationship['entity_type']])) {
+            $tags = Cache::mergeTags($tags, $definitions[$relationship['entity_type']]->getListCacheTags());
+          }
+          // Handle special case with reverse entity reference.
+          if (isset($relationship['plugin_id'])
+            && ($relationship['plugin_id'] == 'entity_reverse')
+            && strpos($relationship['field'], '__')
+          ) {
+            [, $relationship_entity_type] = explode('__', $relationship['field']);
+            if (isset($definitions[$relationship_entity_type])) {
+              $tags = Cache::mergeTags($tags, $definitions[$relationship_entity_type]->getListCacheTags());
             }
           }
         }
       }
     }
-
-    return parent::getCacheTags();
+    return $tags;
   }
 
   /**
