logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Etiquetas de caché + Varnish

19/06/2025, by Ivan

Varnish Cache es un acelerador de aplicaciones web, también conocido como proxy inverso HTTP con caché. Varnish se usa en miles de sitios Drupal para aumentar el rendimiento de carga de páginas entre 10 y 1000 veces, y puede trabajar con etiquetas de caché para facilitar la invalidación de caché.

Para una integración básica de etiquetas de caché, debe hacer tres cosas para asegurarse de que Varnish funcione bien con las etiquetas de caché generadas por Drupal:

  • Actualice el VCL de Varnish para que maneje correctamente las solicitudes BAN.
  • Envíe el encabezado de etiquetas de caché (por ejemplo, X-Cache-Tags) con cada solicitud, que contenga una lista separada por espacios de todas las etiquetas de caché de la página.
  • Envíe la solicitud BAN con las etiquetas de caché correspondientes cada vez que se actualice contenido o configuración, y expire las páginas con esas etiquetas de caché.

Actualización del VCL de Varnish

El paquete Symfony FOSHttpCache contiene una excelente documentación sobre los cambios necesarios en VCL para soportar etiquetas de caché, pero aquí están los cambios mínimos necesarios en VCL para comenzar (para Varnish 4.x):

Dentro de vcl_recv:

sub vcl_recv {
    ...
    # Solo permitir solicitudes BAN desde IPs en la ACL 'purge'.
    if (req.method == "BAN") {
        # La misma verificación ACL que arriba:
        if (!client.ip ~ purge) {
            return (synth(403, "Not allowed."));
        }

        # Lógica para la prohibición, usando el encabezado X-Cache-Tags.
        if (req.http.X-Cache-Tags) {
            ban("obj.http.X-Cache-Tags ~ " + req.http.X-Cache-Tags);
        }
        else {
            return (synth(403, "X-Cache-Tags header missing."));
        }

        # Devolver una página sintética para que la solicitud no vaya al backend.
        return (synth(200, "Ban added."));
    }
}

Dentro de vcl_backend_response:

sub vcl_backend_response {
    # Establecer encabezados personalizados amigables para ban-lurker.
    set beresp.http.X-Url = bereq.url;
    set beresp.http.X-Host = bereq.http.host;
    ...
}

Dentro de vcl_deliver:

sub vcl_deliver {
    # Eliminar encabezados personalizados amigables para ban-lurker al entregar al cliente.
    unset resp.http.X-Url;
    unset resp.http.X-Host;
    # Comente estos para facilitar la depuración de etiquetas de caché de Drupal en desarrollo.
    unset resp.http.X-Cache-Tags;
    unset resp.http.X-Cache-Contexts;
    ...
}

¡Asegúrese de reiniciar Varnish después de realizar los cambios correspondientes en el VCL!

Enviar encabezado de caché

Puede habilitar uno de los siguientes módulos para hacer que Drupal emita un encabezado HTTP que contenga las etiquetas de caché:

Proyecto Módulo Encabezado
Varnish Purger Varnish Purger Tags (varnish_purge_tags) Cache-Tags
Generic HTTP Purger Encabezado de etiqueta HTTP genérico (purge_purger_http_tagsheader) Purge-Cache-Tags

 

Tenga en cuenta que en algunas versiones anteriores a la 8.x-3.0-beta5, el módulo Purge configuraba automáticamente el encabezado Purge-Cache-Tags, pero se eliminó porque se decidió que esta responsabilidad debería recaer en los submódulos.

Enviar solicitud BAN al cambiar contenido o configuración

Usando el módulo Generic HTTP Purger, puede ir a la página de configuración de Purge (admin/config/development/performance/purge) y añadir un Purger HTTP.

Introduzca los datos de su servidor Varnish (nombre de host, puerto, ruta, etc.) y en la configuración de "Encabezados" escriba el encabezado con la siguiente configuración:

  • Encabezado: X-Cache-Tags
  • Valor: [invalidation:expression]

Una vez que guarde esta configuración de Purge y configure una tarea cron para procesar la cola de purga (drush p-queue-work), Varnish debería comenzar a bloquear las páginas tan pronto como la cola de purga desencadene las prohibiciones.

Algunas notas en esta documentación han sido adaptadas de las siguientes fuentes:

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.