Image
Configuration de Cloudflare pour Drupal

Utilisation de Cloudflare pour un site Drupal

Cloudflare
CDN
Performances

Cloudflare propose un grand nombre de fonctionnalités intéressantes pour un site web, même dans sa version gratuite.

Il peut diminuer le trafic des bots, interdire l'indexation par des crawlers liés à l'IA, mettre en cache vos pages pour accélérer leur chargement, optimiser les images, ...
 

Configuration du DNS

Si vous utilisez la version gratuite, il n'y a pas trop le choix : il faut transférer votre serveur de DNS chez eux.
C'est relativement simple mais c'est quand même une contrainte. 

Si vous préférez ne pas transférer la gestion de votre DNS chez Cloudflare, alors il faudra passer par une de leur version payante ou par une agence partenaire.
 

Mise en cache des pages anonymes

Par défaut, Cloudflare ne met en cache que les asset statiques (images, fichiers css, fichiers js, ...). 
C'est déjà bien, mais pour augmenter les performances de votre site, l'idéal est de mettre aussi en cache les pages html.

Pour ce faire, nous allons créer une première règle de cache :

  1. Aller dans "Caching" => "Cache rules", 
  2. Cliquer sur "Créer une règle", 
  3. Choisir "Toutes les requêtes entrantes", puis "éligible pour le cache" 
  4. Sauver la règle.

L'ensemble des pages du site sont maintenant mises en cache. 

Désactivation du cache pour les utilisateurs loggés

Maintenant que l'ensemble des pages du site sont mises en cache, nous avons gagné en performance, mais il y a un nouveau problème : le back-office ne fonctionne plus correctement car ces pages doivent être dynamiques.

Afin de régler ce problème, il faut créer de nouvelles règles. La plus importante consiste à désactiver la mise en cache quand il y a un cookie d'authentification lié à la requête. 

Nous allons donc une nouvelle règle :

  1. Cette fois-ci choisissez "Expression de filtre personnalisé", puis :
    champ => Cookie
    opérateur => contient
    Valeur => SSESS
  2. Et enfin "Contourner le cache"

    Dorénavant, les pages ne seront plus mises en cache si l'utilisateur est authentifié.
    Pour parachever la configuration, il est aussi utile d'exclure certaines urls du cache.

  3. Créez donc une dernière règle :
    "Expression de filtre personnalisé"
    Champ => Chemin URI
    Opérateur => caractère générique
    Valeur => /user/*

Et voilà, le CDN est mis en place et les performances de l'ensemble des pages anonymes sont grandement améliorées.

Purge du cache

Maintenant que les pages sont en cache, il faut un système pour les rafraîchir quand il y a des modifications de contenu. C'est un des rôles du module "cloudflare".

Pour finir notre configuration nous allons donc installer ce module et le configurer : 

Créer une API key dans cloudflare :
- Mon profil => Jetons API => Autorisations = "Zone / Vider le cache / Vider"
- Ressources de la zone : spécifiez la zone concernée

Dans la page de configuration du module cloudflare, ajoutez le token que vous venez de créer. La communication avec le CDN est établie.

Il reste à configurer le module "cloudflare purge", pour cela, allez sur la page de configuration du module "purge" et cliquez sur "add purger", puis sélectionnez cloudflare.

Si vous utilisez la version "enterprise " de cloudflare, il n'y a plus rien à faire.


Si vous utilisez la version gratuite, il n'est pas possible d'invalider les caches par tag, mais uniquement par url. Du coup, installez le module "purge_queuer_url", puis dans la page de config de "purge", enlevez le queuer par tag et ajoutez celui par url. Comme l'indique le module "url queuer", il faut maintenant crawler votre site afin de lui faire comprendre les urls utilisées. Pour cela, vous pouvez exécuter la commande suivante : wget -r -nd --delete-after -l100 --spider http://site/
Attention, si cloudflare est déjà activé, il faut vider son cache avant de lancer le crawl, sinon il n'aura pas l'effet escompté.

Ajoutez éventuellement un appel à drush dans votre cron (drush p:queue-work) pour vider la queue et tout devrait fonctionner !