Drupal

Memòria cau (cache) en Drupal 8

La memòria cau és la part important d'un procés de desenvolupament. Tots fem servir memòria cau, però no tothom és capaç de manejar. Anem a fer una ullada al que és una memòria cau i com es pot utilitzar per a la seva pàgina web en Drupal 8. També entrarem en detalls i parlarem de l'API de la memòria cau, acte-placeholdering i el mòdul BigPipe.

Drauta agencia digitalDrauta

cache drupal 8

¿Que és una memòria cau?

La memòria cau és un maquinari o un component de programari que emmagatzema les pàgines sol·licitades amb freqüència o les parts de les pàgines, i aquestes pàgines es poden mostrar als usuaris amb menys temps i amb una velocitat més ràpida del que és habitual.

Què passa amb la pàgina mentre s'està carregant? S'activen les funcions del sistema i els arxius de tots els mòduls, s'inicialitzen els ajustos i les variables, es carrega un tema i s'implementen. Quan s'habilita la memòria cau, es carrega la configuració bàsica del sistema i la pàgina es carrega des de la memòria cau. Òbviament, en aquest cas la pàgina es carrega més ràpid.

La memòria cau és el component important de l'optimització de llocs. És un dels elements clau en l'avaluació de l'aplicació Google PageSpeed.

Cache en Drupal 8

Què passa amb la memòria cau i l'optimització en Drupal 8?

Per defecte, Drupal 8 habilita dos mòduls: memòria cau de pàgina interna i memòria cau de pàgina dinàmiques internes. Memòria cau de pàgina interna emmagatzema memòria cau les pàgines per a usuaris anònims. El cau de pàgines dinàmiques intern emmagatzema en memòria cau el contingut de la pàgina, excepte les peces personalitzades, perquè puguen utilitzar per als usuaris anònims i autoritzats. Cada objecte de la pàgina conté metadades, i aquesta peça de metadades indica al mòdul de memòria cau de pàgina dinàmica interna si ha d'emmagatzemar la pàgina en memòria cau o no. Podeu canviar les metadades predeterminats per l'API de memòria cau.

API de memòria cau Drupal 8

Les propietats d'acoblament es poden establir en qualsevol objecte. La memòria cau té 3 propietats. Si voleu canviar la configuració per defecte de memòria cau, pot usar-les. Aquestes propietats són les següents.

Context és una dependència de memòria cau en el context, que crea variacions quan es generen les matrius de processament. Per exemple, una pàgina per a dos usuaris diferents pot semblar diferent. En aquest cas, el context és l'usuari. Aquests contextos poden ser els permisos d'usuari, la configuració d'idioma o els paràmetres d'URL.

Les etiquetes defineixen de quin objecte depèn la memòria cau. Utilitzant etiquetes de memòria cau pot invalidar automàticament les pàgines emmagatzemades a la memòria cau.

Max-age és el temps màxim que s'emmagatzema la memòria cau.

'#cache' => [
  'contexts' => ['languages', 'timezone'],
  'tags' => ['node:5', 'user:3'],
  'max-age' => Cache::PERMANENT,
],

En construir qualsevol objecte, pot canviar la configuració de la memòria cau per a fer-lo més flexible. Cal configurar la configuració a la representació.

A la pràctica, es veu així:

$renderer = \Drupal::service('renderer');

$config = \Drupal::config('system.site');
$current_user = \Drupal::currentUser();

$build = [
  '#prefix' => '',
  '#markup' => t('Hi, %name, welcome back to @site!', [
    '%name' => $current_user->getUsername(),
    '@site' => $config->get('name'),
  ]),
  '#suffix' => '',
  '#cache' => [
    'contexts' => [
      'user',
    ],
  ],
];
$renderer->addCacheableDependency($build, $config);
$renderer->addCacheableDependency($build, \Drupal\user\Entity\User::load($current_user->id()));

A més, pot obtenir paràmetres d'emmagatzematge en memòria cau d'una entitat mitjançant un mètode estàndard:

\Drupal::entityManager()->getDefinition('node')->getListCacheContexts();
$view->getEntityType()->getListCacheTags();
$node->getEntityType()->isRenderCacheable();

Marcat automàtic

Per obtenir la millor capacitat d'emmagatzematge en memòria cau de les parts altament dinàmiques d'una pàgina, pot utilitzar el marcat automàtic. Per a això faci servir una devolució de trucada #lazy_builder:

$build[$id]['links'] = array(
  '#lazy_builder' => [
    'comment.lazy_builders:renderLinks',
    [
      $entity->id(),
      $view_mode,
      $entity->language()->getId(),
      !empty($entity->in_preview),
    ]
  ],
  '#create_placeholder' => TRUE,
);

Drupal genera marcadors de posició per a contingut dinàmic, i només en l'últim moment es substitueix per contingut real. Això permet que el mòdul de memòria cau de pàgina dinàmica interna processi els fragments de memòria cau excepte les parts de la pàgina que són massa dinàmiques per a l'emmagatzematge en memòria cau.

BigPipe, mòdul memòria cau Drupal

Però tenim un problema: Drupal mostra una pàgina completa alhora. Un usuari espera que es carreguin totes les parts de la pàgina. Per solucionar aquest problema BigPipe ha estat desenvolupat. És un mòdul experimental, que es pot veure a la versió 8.1 de Drupal.

Com es va veure en el vídeo, la màgia de BigPipe fa és augmentar la velocitat a través de la càrrega de les parts en memòria cau de la primera pàgina i mostrar-los tan aviat com estiguin llestos. L'última a carregar són les parts dinàmiques de la pàgina.

Conclusió

La memòria cau és la part important de l'optimització de pàgines web. Si desitja que els seus usuaris obtinguin pàgines el més ràpid possible, activi la memòria cau. En Drupal 8 l'emmagatzematge en memòria cau s'ha millorat considerablement. Si vols que el teu lloc funcioni més ràpid i saps com fer-ho, llavors uneix-te al desenvolupament del mòdul BigPipe, escriu el teu problema en drupal.org sobre memòria cau, fes-te membre actiu de la comunitat. Junts som més forts i podríem contribuir de manera més significativa.

Vols començar un nou projecte amb nosaltres?

Necessites un servei per a la teva web? Descobreix com et podem ajudar i no dubtis en contactar amb nosaltres.