public function EntityViewBuilder::resetCache

public EntityViewBuilder::resetCache(array $entities = NULL)

Resets the entity render cache.

Parameters

\Drupal\Core\Entity\EntityInterface[] $entities: (optional) If specified, the cache is reset for the given entities only.

Overrides EntityViewBuilderInterface::resetCache

File

core/lib/Drupal/Core/Entity/EntityViewBuilder.php, line 335

Class

EntityViewBuilder
Base class for entity view builders.

Namespace

Drupal\Core\Entity

Code

public function resetCache(array $entities = NULL) {
  // If no set of specific entities is provided, invalidate the entity view
  // builder's cache tag. This will invalidate all entities rendered by this
  // view builder.
  // Otherwise, if a set of specific entities is provided, invalidate those
  // specific entities only, plus their list cache tags, because any lists in
  // which these entities are rendered, must be invalidated as well. However,
  // even in this case, we might invalidate more cache items than necessary.
  // When we have a way to invalidate only those cache items that have both
  // the individual entity's cache tag and the view builder's cache tag, we'll
  // be able to optimize this further.
  if (isset($entities)) {
    $tags = [];
    foreach ($entities as $entity) {
      $tags = Cache::mergeTags($tags, $entity->getCacheTags());
      $tags = Cache::mergeTags($tags, $entity->getEntityType()->getListCacheTags());
    }
    Cache::invalidateTags($tags);
  }
  else {
    Cache::invalidateTags($this->getCacheTags());
  }
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Entity!EntityViewBuilder.php/function/EntityViewBuilder::resetCache/8.1.x