diff --git a/entitycache.info b/entitycache.info
index 10d5534..b0258d1 100644
--- a/entitycache.info
+++ b/entitycache.info
@@ -4,6 +4,7 @@ package = Performance and scalability
 core = 7.x
 php = 5.3
 
+files[] = includes/entitycache.entitycacheentitycontrollerinterface.inc
 files[] = includes/entitycache.entitycachecontrollerhelper.inc
 files[] = includes/entitycache.comment.inc
 files[] = includes/entitycache.defaultentitycontroller.inc
diff --git a/entitycache.install b/entitycache.install
index 159102b..5830706 100644
--- a/entitycache.install
+++ b/entitycache.install
@@ -64,3 +64,11 @@ function entitycache_update_7003() {
   registry_update();
   entity_info_cache_clear();
 }
+
+/**
+ * Rebuild entity info cache and registry.
+ */
+function entitycache_update_7004() {
+  registry_update();
+  entity_info_cache_clear();
+}
diff --git a/entitycache.module b/entitycache.module
index bd4c648..b85b249 100644
--- a/entitycache.module
+++ b/entitycache.module
@@ -220,6 +220,9 @@ function entitycache_user_login(&$edit, $account) {
  *
  * @see https://www.drupal.org/node/2441965#comment-10558568
  */
+if (!interface_exists('EntityCacheEntityControllerInterface')) {
+  require_once __DIR__ . '/includes/entitycache.entitycacheentitycontrollerinterface.inc';
+}
 if (!class_exists('EntityCacheControllerHelper')) {
   require_once __DIR__ . '/includes/entitycache.entitycachecontrollerhelper.inc';
 }
diff --git a/includes/entitycache.comment.inc b/includes/entitycache.comment.inc
index 8a8a762..518a8cc 100644
--- a/includes/entitycache.comment.inc
+++ b/includes/entitycache.comment.inc
@@ -8,13 +8,20 @@
 /**
  * Comment entity controller class with persistent cache.
  */
-class EntityCacheCommentController extends CommentController {
+class EntityCacheCommentController extends CommentController implements EntityCacheEntityControllerInterface {
 
   /**
    * {@inheritdoc}
    */
   public function resetCache(array $ids = NULL) {
     EntityCacheControllerHelper::resetEntityCache($this, $ids);
+    $this->resetStaticCache($ids);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function resetStaticCache(array $ids = NULL) {
     parent::resetCache($ids);
   }
 
diff --git a/includes/entitycache.defaultentitycontroller.inc b/includes/entitycache.defaultentitycontroller.inc
index 3bb91a6..9a5039a 100644
--- a/includes/entitycache.defaultentitycontroller.inc
+++ b/includes/entitycache.defaultentitycontroller.inc
@@ -8,13 +8,20 @@
 /**
  * Default entity controller with persistent cache.
  */
-class EntityCacheDefaultEntityController extends DrupalDefaultEntityController {
+class EntityCacheDefaultEntityController extends DrupalDefaultEntityController implements EntityCacheEntityControllerInterface {
 
   /**
    * {@inheritdoc}
    */
   public function resetCache(array $ids = NULL) {
     EntityCacheControllerHelper::resetEntityCache($this, $ids);
+    $this->resetStaticCache($ids);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function resetStaticCache(array $ids = NULL) {
     parent::resetCache($ids);
   }
 
diff --git a/includes/entitycache.entitycacheentitycontrollerinterface.inc b/includes/entitycache.entitycacheentitycontrollerinterface.inc
new file mode 100644
index 0000000..6ea6ded
--- /dev/null
+++ b/includes/entitycache.entitycacheentitycontrollerinterface.inc
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * Common interface for entity controllers supporting entity cache.
+ */
+interface EntityCacheEntityControllerInterface extends DrupalEntityControllerInterface {
+
+  /**
+   * Resets the internal, static entity cache.
+   *
+   * @param string[] $ids
+   *   (optional) If specified, the cache is reset for the entities with the
+   *   given ids only.
+   */
+  public function resetStaticCache(array $ids = NULL);
+
+}
diff --git a/includes/entitycache.node.inc b/includes/entitycache.node.inc
index f4df655..5832dff 100644
--- a/includes/entitycache.node.inc
+++ b/includes/entitycache.node.inc
@@ -8,13 +8,20 @@
 /**
  * Node entity controller with persistent cache.
  */
-class EntityCacheNodeController extends NodeController {
+class EntityCacheNodeController extends NodeController implements EntityCacheEntityControllerInterface {
 
   /**
    * {@inheritdoc}
    */
   public function resetCache(array $ids = NULL) {
     EntityCacheControllerHelper::resetEntityCache($this, $ids);
+    $this->resetStaticCache($ids);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function resetStaticCache(array $ids = NULL) {
     parent::resetCache($ids);
   }
 
@@ -24,4 +31,5 @@ class EntityCacheNodeController extends NodeController {
   public function load($ids = array(), $conditions = array()) {
     return EntityCacheControllerHelper::entityCacheLoad($this, $ids, $conditions);
   }
+
 }
diff --git a/includes/entitycache.taxonomy.inc b/includes/entitycache.taxonomy.inc
index e1c03e1..7384d07 100644
--- a/includes/entitycache.taxonomy.inc
+++ b/includes/entitycache.taxonomy.inc
@@ -8,13 +8,20 @@
 /**
  * Taxonomy term entity controller class with persistent cache.
  */
-class EntityCacheTaxonomyTermController extends TaxonomyTermController {
+class EntityCacheTaxonomyTermController extends TaxonomyTermController implements EntityCacheEntityControllerInterface {
 
   /**
    * {@inheritdoc}
    */
   public function resetCache(array $ids = NULL) {
     EntityCacheControllerHelper::resetEntityCache($this, $ids);
+    $this->resetStaticCache($ids);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function resetStaticCache(array $ids = NULL) {
     parent::resetCache($ids);
   }
 
@@ -30,13 +37,20 @@ class EntityCacheTaxonomyTermController extends TaxonomyTermController {
 /**
  * Taxonomy vocabulary entity controller class with persistent cache.
  */
-class EntityCacheTaxonomyVocabularyController extends TaxonomyVocabularyController {
+class EntityCacheTaxonomyVocabularyController extends TaxonomyVocabularyController implements EntityCacheEntityControllerInterface {
 
   /**
    * {@inheritdoc}
    */
   public function resetCache(array $ids = NULL) {
     EntityCacheControllerHelper::resetEntityCache($this, $ids);
+    $this->resetStaticCache($ids);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function resetStaticCache(array $ids = NULL) {
     parent::resetCache($ids);
   }
 
diff --git a/includes/entitycache.user.inc b/includes/entitycache.user.inc
index ac64c62..06903a3 100644
--- a/includes/entitycache.user.inc
+++ b/includes/entitycache.user.inc
@@ -8,13 +8,20 @@
 /**
  * User entity controller with persistent cache.
  */
-class EntityCacheUserController extends UserController {
+class EntityCacheUserController extends UserController implements EntityCacheEntityControllerInterface {
 
   /**
    * {@inheritdoc}
    */
   public function resetCache(array $ids = NULL) {
     EntityCacheControllerHelper::resetEntityCache($this, $ids);
+    $this->resetStaticCache($ids);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function resetStaticCache(array $ids = NULL) {
     parent::resetCache($ids);
   }
 
