渲染数组被渲染的时候,为了提高性能,会将渲染结果保存到缓存中,这样就避免了重复渲染
并且每个子元素的渲染结果都可以被独立缓存,如此一来子元素也可以避免重复渲染
不过缓存中保存的渲染数组是经过简化的,渲染缓存默认只缓存以下内容,这样经简化的数组叫做“CacheableRenderArray”:
$elements = [
'#markup' => $elements['#markup'],
'#attached' => $elements['#attached'],
'#cache' => [
'contexts' => $elements['#cache']['contexts'],
'tags' => $elements['#cache']['tags'],
'max-age' => $elements['#cache']['max-age'],
],
];
注意:它并不包括$elements['#cache']['keys']
默认如上,但是当我们也想缓存其他内容的时候怎么处理?可以这样:
指定$elements['#cache_properties'],它是一个数组,键值为想要缓存的元素的键名即可
比如在Drupal\Core\Render\MainContent\HtmlRenderer