Adăugarea contextului cache la răspuns nu este mai globală. Este chiar invers.Numai dacă puneți contextul cache în același element de randare care depinde de acest context, acesta poate fi îmbinat în toate nivelurile de cache afectate. În acest exemplu, contextul paragrafului va fi îmbinat cu nodul părinte și apoi cu pagina. Paragraful și nodul pot fi, de asemenea, într-un bloc sau o vizualizare. Toate aceste elemente au nevoie de acel context cache.
Adăugarea contextului cache într-un cârlig de preproces este într-adevăr ultima soluție în procesul de redare a unui șablon. Există cod suplimentar în Drupal care verifică partea de sus a $variabilelor unui cârlig de preprocesare și îmbină metadatele din cache în șablon.
Cu toate acestea, ideea din spatele metadatelor cache este să le adăugați direct la matricea de compilare atunci când se generează conținut în cod, astfel încât să poată apărea în toate șabloanele implicate. Acest lucru funcționează și atunci când se refactorizează codul la o funcție utilizată în locuri diferite. De exemplu, o funcție Twig:
$build = [];
// construiește conținut
$build['#cache']['contexts'][] = 'mobile_detect_is_mobile';
// fie returnează tabloul de compilare pentru a fi redat în {{ }}
returnează $build;
// sau dacă funcția dvs. Twig nu returnează $build bubble, cel puțin metadatele
// redându-l în interiorul funcției Twig
\Drupal::service('renderer')->render($build);