diff --git a/plugins/relationships/entity_from_schema.inc b/plugins/relationships/entity_from_schema.inc
index 809473e..eb96468 100644
--- a/plugins/relationships/entity_from_schema.inc
+++ b/plugins/relationships/entity_from_schema.inc
@@ -23,6 +23,12 @@ function ctools_entity_from_schema_get_child($plugin, $parent, $child) {
 }
 
 function ctools_entity_from_schema_get_children($parent_plugin, $parent) {
+  $cid = $parent_plugin['name'] . ':' . $parent;
+  $cache = &drupal_static(__FUNCTION__, array());
+  if (!empty($cache[$cid])) {
+    return $cache[$cid];
+  }
+
   $entities = entity_get_info();
   $plugins = array();
 
@@ -97,6 +103,8 @@ function ctools_entity_from_schema_get_children($parent_plugin, $parent) {
     }
   }
   drupal_alter('ctools_entity_contexts', $plugins);
+  $cache[$cid] = $plugins;
+
   return $plugins;
 }
 
