Mise en cache et distribution mondiale de votre site internet

23 juin 2020

Mise en cache et distribution mondiale de votre site internet

A propos de l’utilisation d’un CDN et les pièges à éviter

L’une des meilleures opportunités d’améliorer les performances de votre site est la mise en cache des contenus générés par votre site internet.
A chaque fois qu’un utilisateur fait une requête à votre site internet, toute une mécanique se met en place pour construire la page demandée avant de la présenter à l’utilisateur et cela prend du temps.

Si vous utilisez WordPress, vous avez peut-être installé un plugin de mise en cache. Malheureusement, cela ne satisfera que les besoins les plus basiques.

Cet article vous présente les bénéfices d’un CDN et également les pièges à éviter.

Voici un aperçu de ce dont nous allons traiter :

  1. Qu’est-ce que la mise en cache ?
  2. Qu’est-ce qu’un CDN ?
  3. Diverses questions et pièges à éviter

Qu'est-ce que la mise en cache ?

La mise en cache est un procédé permettant de mémoriser le résultat d’une action relativement longue à obtenir pour une utilisation future plus rapide.

Dans le cas d’un site internet, on identifie plusieurs types de caches :

  1. Le cache du navigateur, qui met en cache les ressources chargées pour une utilisation future. Par exemple, les styles et polices du site sont mis en cache.
  2. Le cache de pages, celui qui nous intéresse. Il examine la requête de l’utilisateur, puis renvoie la page demandée directement depuis sa mémoire. Si la page n’existe pas dans le cache, il transmet la demande au site qui génère la page, la donne au cache qui l’enregistre et la renvoie à l’utilisateur.
  3. Le cache d’objets, de plus bas niveau, il mémorise des résultats de requêtes de base de données lourdes à calculer ou encore le résultat d’appels à des ressource distantes.

Tous ont un point commun : une durée de vie (TTL) est définie pour chaque élément à mettre en cache.

Par exemple, on va choisir de mettre en cache plusieurs mois les éléments à mettre en cache par les navigateurs. La mise en cache de pages peut être plus courte pour permettre les mises à jour ou suppressions, bien qu’on puisse aussi purger le cache.

Qu'est-ce qu'un CDN ?

CDN signifie Content Delivery Network, soit Réseau de distribution de contenu.

Cet outil d’infrastructure permet de réduire drastiquement les temps d’accès à votre site internet, dans le monde entier.

Pour y arriver, on créé un ensemble de points d’entrée tout autour du globe. Ces points sont capables de mettre en cache les pages demandées.

Ainsi, vos visiteurs de l’autre côté du monde accèdent à votre site par l’un de ces points, qui met en cache vos pages au fur et à mesure.

Par exemple, le service CloudFront propose aujourd’hui plus de 200 points d’entrée.

Nous savons à présent ce qu’est un CDN, voyons maintenant quelques questions et pièges qui surviennent lorsque l’on met en place un mécanisme de cache de pages.

Pourquoi ne pas installer un plugin de cache ?

Faible résistence à la charge

Pour les sites à haut trafic, la charge que peut subir le site ne va pas permettre une réponse rapide. Ce sera mieux que rien, mais pas suffisant pour nous.

Difficile d'utiliser un répartiteur de charge

Un répartiteur de charge distribue le trafic à plusieurs instances de votre site internet. L’instance la moins sollicitée répondra à la requête. Il faudra donc centraliser les fichiers mis en cache.

Moins performant

L’enregistrement des pages cachées se fait dans un disque local. L’accès au données est donc plus lent que lorsque ces pages sont stockées en mémoire vive.

Peut-on tout mettre en cache ?

La réponse est non, voici quelques exemples :

L'interface d'administration

La plupart des CMS comme WordPress fournissent une interface d’administration. Il faut qu’elle soit accessible.

En général, on exclut ces pages en indiquant de ne pas mette en cache les requêtes des utilisateurs enregistrés en se basant sur les cookies nécessaires à l’identification des utilisateurs.

Les pages au contenu personnalisé

Les pages ayant un contenu personnalisé pour chaque utilisateur ne peuvent pas être mises en cache.

Par exemple, si le nom d’utilisateur est affiché sur une page, les utilisateurs qui demandent la même page voient le nom du premier utilisateur au lieu du leur.

Il faut donc exclure ces pages ou déléguer le chargement des données de l’utilisateur au navigateur, après le chargement initial de la page.

Les redirections de contenus traduits basées sur la langue

Si votre site comporte des pages traduites en plusieurs langues, il est commun de rediriger automatiquement l’utilisateur dans sa langue préférée lorsqu’il visite la page dans une autre langue. Cela ne fonctionnera pas si le site internet gère lui-même la redirection.

Par exemple, si ma langue préférée est le Français et que je visite /en/contact-us qui est déjà mise en cache, je ne serai pas redirigé vers la bonne page.

Il faut donc désactiver cette fonctionnalité ou utiliser la redirection via Javascript possiblement fournie par le CMS que vous utilisez.

Comment le CDN gère-t-il les redirections initiées par le site ?

Le CDN transfère les redirections (code 301) générées par le serveur jusqu’à l’utilisateur. Son navigateur prend alors la redirection et effectue une nouvelle requête.

Cas : Les URLs raccourcies basées sur la langue

Dans le cas où vous utilisez des URLs raccourcies pour vos campagnes et souhaitez les rediriger dans une langue précise, cela peut fonctionner.

Par exemple, on veut communiquer sur /summer et rediriger vers /reserver-vos-vacances-d-ete et /book-your-summer-holidays selon la langue de l’utilisateur. Le serveur déduit la langue préférée de l’utilisateur et lui indique la page à consulter.

Il restera à s’assurer que le CDN ne mette pas en cache la route /summer sans quoi la première redirection mise en cache sera servie à tous les utilisateurs.

Redirection gérées par le serveur

Si votre serveur gère des redirections, par exemple des anciennes URLs qui doivent rediriger vers les nouvelles pages, il faut s’assurer que les redirections se font sur le bon nom de domaine, et non pas le nom de domaine du serveur.

Vous avez à présent un aperçu de ce que sont la mise en cache et les CDN. Vous connaissez les bénéfices que cela peut vous apporter et que cela apporte une nouvelle complexité à votre projet.

La mise en place d’une telle solution doit de ce fait être finement planifiée.