Drupal 的缓存系统

admin 提交于 周三, 06/07/2023 - 15:21

缓存系统

官方有着关于 缓存系统 完善的文档, Cache API 指南文档 以及 代码文档

基本概念

缓存是用于保存那些需要花费大量性能开销的计算结果,以避免重复计算,从而提高系统运行效率。

下面是使用缓存的一个简单的过程,在计算一个结果之前,先从缓存中查找结果, 如果缓存命中则直接使用缓存中的数据,否则执行计算,并把计算结果放入缓存,以便之后重用:

$cid = 'mymodule_example:' . \Drupal::languageManager()
  ->getCurrentLanguage()
  ->getId();
$data = NULL;
if ($cache = \Drupal::cache()
  ->get($cid)) {
  $data = $cache->data;
}
else {
  $data = my_module_complicated_calculation();
  \Drupal::cache()
    ->set($cid, $data);
}

缓存分类

在 Drupal 中,缓存可以被分为多个类别,这些分类被称为 bins

系统已定义的分类有:

  • bootstrap 应用程序的整个生命周期都需要的数据,而且很少会变化或失效。
  • render 用于缓存页面渲染数据,这种缓存的数据量很大。
  • data
  • discovery