es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Drupal 9: Cómo desactivar la caché para una página específica.

Cómo puedo desactivar la caché de una página específica en Drupal 9,
Encontré una solución, pero solía desactivar la caché para todas las páginas, la solución es: Agregar este código en settings.yml:

assert_options(ASSERT_ACTIVE, TRUE);
\Drupal\Component\Assertion\Handle::register();
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['page'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';

Eso funciona, pero solo quiero desactivar la caché para una página específica.
Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para deshabilitar la caché para una página específica en Drupal 9, puedes crear un módulo personalizado y agregar el siguiente código al archivo .module del módulo:

    /**
     * Implementa hook_cache_contexts_alter().
     */
    function nombre_de_tu_modulo_cache_contexts_alter(&$contexts, &$bubbleable_metadata) {
      // Obtén el objeto de solicitud actual.
      $request = \Drupal::request();
    
      // Verifica si la página actual es aquella para la cual deseas deshabilitar la caché.
      if ($request->attributes->get('_route') == 'nombre_de_la_ruta_de_tu_pagina') { // Reemplaza con el nombre de ruta real de la página.
        // Elimina los contextos de caché que Drupal utiliza para la caché.
        $contexts = array_diff($contexts, ['session', 'user']);
      }
    }
    

    Este código eliminará los contextos de caché que Drupal utiliza para la caché, y por lo tanto deshabilitará la caché para la página específica que deseas. Reemplaza ‘nombre_de_tu_modulo’ con el nombre de tu módulo personalizado y ‘nombre_de_la_ruta_de_tu_pagina’ con el nombre de ruta real de la página para la cual deseas deshabilitar la caché.

    Guarda los cambios en el archivo .module y habilita el módulo personalizado. La caché ahora debería estar deshabilitada para la página específica.

Comments are closed.