 Bonjour à tous et tous. Avant de commencer la présentation, je voulais juste faire un petit disclaimer. C'est normal que ça se croire. Ça fait depuis le confinement que je n'ai pas fait de présentation, à revoir compte ou à d'autres événements. Du coup, j'étais tellement content que je vous parlais en tout de suite. J'ai mis des effets dans mes slides. Je vais vous prendre la tête pendant des heures. Ce sont des sujets que je ne m'arrêterai plus qu'un. Non, je vais. Avant qu'on commence, est-ce que vous vous êtes déjà posé la question de ce qui se passe quand vous cliquez sur un lien dans votre navigateur ? Vous êtes sur un site WordPress et est-ce que vous vous êtes déjà posé la question de toute la mécanique qui est derrière ? Oui, quand même quelques uns. On va juste voir rapidement, parce que c'est quand même assez incroyable ce qui se passe quand on clique sur un lien. Donc, on va prendre notre navigateur et on va quitter sur un lien. La première chose qui va se passer, c'est que ce lien est sous forme d'URL. La plupart du temps, c'est d'URL avec du texte. Et, malheureusement, le réseau, ça, c'est pas fonctionnel du texte. Donc, il va falloir traduire ça en adresse IP. Ce qu'on appelle un DNS, il y a un premier aller-retour, il va juste traduire l'URL en adresse IP. Une fois qu'on a cette adresse IP, on va aller sur le serveur qui est désigné par adresse IP. Et généralement, avant d'atteindre le serveur, on compte sur un truc qu'on peut appeler un proxy, un autre balanceur, ce que vous voulez. Et seulement après, on va sur notre serveur et l'information remonte jusqu'à notre navigateur. Là, vous vous dites super, on vient d'obtenir la page pour laquelle on a cliqué. En fait, non. En fait, on a juste du HKML tout ça, avec une liste de ressources à aller chercher, du CSS, du JS, des images. Et qu'est-ce qui se passe à ce moment-là ? À part, on commence pour chaque ressource que l'on doit aller chercher. On va faire la conversion de son URL en adresse IP. Puis, on va aller chercher sur le serveur, on a des moques de chance sur le serveur dans l'univers pas directement. Il y a quelque chose sur le chemin, le profilier, le balanceur, ce que vous voulez, nettoyer, etc. On va éventuellement retourner sur notre serveur, chercher la ressource, et on la remonte. Et, évidemment, il y a tout un tas de ressources qui ne deviennent pas directement du serveur ou été verger le site web. Et là, on va aller chercher dans ce qu'on appelle un CDN. Donc des ressources externes, finalement, que ce soit CDN ou pas CDN. Et là, ça y est, on a enfin notre page. Voilà. Si je voulais vous faire ce petit rappel avant, c'est parce que ça sera le fil conducteur, en fait, de toute la présentation, qui va durer à peu près 80 minutes. Et on va détailler chacun de ces points-là pour voir s'il n'y a pas du cash. Et donc, je vous remercie de tous d'être là. Je vous propose, je suis la noire. Non, mais avant l'auteur, la fin de la phrase. Je suis la noire. Et je vous propose de faire un petit voyage au cœur du cash. Alors, avant de se faire ce voyage, est-ce que quelqu'un peut me dire que c'est un cash ? Est-ce que c'est du cash ? C'est une image. C'est une image ? De la page. Et quand c'est du CSS, c'est une image du CSS ? C'est de l'image et de l'école. C'est de l'personalisation. Et là, c'est... Ok. C'est... C'est pas tout à fait ça. Et bien d'autre, une définition sympa, courte, rapide à donner. On enregistre, donc ça veut dire que le cash ne concerne que les pages. C'est... Ouais. On s'en approche. On va la faire courte. Le cash, c'est un composant logiciel ou matériel qui permet de stocker temporairement les données. C'est tout. Ça n'est que ça. Si vous pensez que c'est d'autre chose, c'est que vous ne comprenez pas ce que c'est que le cash, donc ça tombe bien. Je vais essayer de faire en sorte de vous expliquer ce que c'est que le cash. Alors, pourquoi on fait des copies temporaires de données ? Il y a 3 raisons majeures pour lesquelles on fait. C'est parfait. La première, c'est pour des questions de performance. Tout simplement, parce que quand on a une opération longue à exécuter, plutôt que de la refaire à chaque fois qu'on a besoin du résultat de cette opération, il suffit de stocker le résultat de cette opération la première fois. Et évidemment, les précédents, ça sera beaucoup plus rapide à obtenir. C'est vraiment pour des questions de performance. Ensuite, il y a une question de résilience. Imaginez que vous allez chercher sur votre site un fichier CSS qui est nécessaire, qui est indispensable dans un mode site TV. Ça ressemble à rien. Et puis, le fichier CSS en un moment donné, votre sable web il refugie de le livrer pour être sur raison, parce que vous avez fait une baisse confinée, parce qu'il n'est tombé en panne, etc. Et pas un cash, il va y avoir un copy de données de ce truc-là. Ça vous permet quand même de continuer à faire fonctionner notre site. Donc un fort aspect de résilience face à l'indisponibilité ou à l'attention de cette raison. Et la troisième raison qui ne l'oublie très souvent, mais ça nous surprend de tout ce qui me connaisse, ça ne vous surprendra pas que je n'en parle. C'est l'efficience. En fait, utiliser un cash c'est beaucoup, beaucoup, beaucoup, beaucoup plus incorresponsable que d'utiliser la source de données initiales dans tous les cas de figure. Il n'y a pas pas le cas de figure ou ça n'est pas le cas. Du coup, tout le monde est d'accord parce que c'est du cash. On est d'accord. On peut continuer ou on peut débattre aussi si vous voulez. Non, ça va. Ok, super. Alors, on va revenir, je suis désolé, c'est ce que je vous avais dit, ça va prendre quelque part. On va revenir sur notre petit schéma et on va repartir du navigateur. Alors le navigateur, c'est déjà un endroit où on trouve le niveau de cash. C'est le cash navigateur. Il est évidemment intégré au poste de travail sur lequel il est navigateur. C'est un des copies locales tant envers des choses. C'est majoritairement pour des ressources statiques. Quand je parle de ressources statiques, c'est d'ailleurs des fichiers CSS déjà générés, du GIS, de l'image, mais pas de ressources dynamiques ou en tout cas on va pas rentrer dans les cas avec des marqueurs Chrome sur ce sujet aujourd'hui. Et là vous vous dites c'est super il suffit de l'avoir dans son navigateur et c'est maintenant pas du tout parce que vous êtes obligé de faire certaines choses sur le serveur. Vous pouvez dire que vous voulez utiliser le cash navigateur et si vous ne le faites pas, le navigateur dans la plupart du temps et pour la plupart des choses n'utilisera pas de cash et ne cachera pas ces ressources statiques. Si vous vous posez la question enant donnée, la réponse c'est si vous vous posez la question c'est que vous l'avez pas fait donc que ça ne fonctionne pas. Alors ce type de cash est à utiliser systématiquement en prod. Je vais pas vous apprendre des choses par contre n'oubliez jamais c'est jamais jamais en développement. Vous êtes sûr d'avoir des effets de doigt vous êtes sûr de ne jamais avoir la bonne copie de galapie. À moins mettre des numéros de version etc. Mais là ça vient n'importe quoi. Comment ça se paramètre soit dans l'extension WordPress spécifique c'est-à-dire des extensions qui ne font que ça régler le cash navigateur côté serveur et d'avoir les bons paramètres pour que ça parte sur le navigateur. Ou alors des généralistes qui verra tout à l'heure qu'il y a des extensions de gestion de cash qui réglagent un certain nombre de features ou alors vous pouvez le faire vous-même en écrivant votre fichier HDACS à la main parce que tout le monde ici je pense fait je suis bambinante Comment vous vérifiez que ça fonctionne ce truc là ? Vous avez dans l'inspecteur du navigateur et vous allez vérifier dans l'onglet réseau quand vous rechargez la page qu'il est bien indiqué qu'elle s'est chargée à partir de la mémoire et non pas une source réseau particulière. Alors quand je dis mémoire c'est sous crocs sous safari ou Firefox des termes un peu différents mais globalement c'est la même chose. Donc là on a vu le navire n'hésitez pas à m'interrompre je suis prêt à passer une demi-heure trois-quart d'heure sur un sujet en particulier si vraiment vous le demandez. Le second gage qu'on a vu c'est au niveau du DNS enfin le second chemin le second step du chemin c'est au niveau du DNS et là vous dites le DNS ça c'est juste la conversion de l'adresse textuelle en adresse IP pas vraiment cache en fait si non seulement il y a du cache sur le poste du client parce que une adresse textuelle qui a déjà été convertie en adresse IP parfois elle est prise dans un cache sur le poste client et ensuite il y a aussi une notion de cache géographique vous me dites attendez attends mon petit tuto on va parler de cache regret et de cache géographique on va voir qu'il y a déjà deux formes de cache le cache de cache ce qu'on a vu tout à l'heure dans l'adbioteur ce qu'on voit là aussi au niveau du poste de travail ça veut dire que on prend la copie et on la met à l'endroit où elle est utilisée et après il y a des caches géographiques le cache géographique c'est on fait une copie de cette donnée et on va la mettre le plus près de l'endroit où elle va être utilisée sans savoir vraiment où elle va être utilisée pour le cache de cache c'est ce qu'on appelle le DTL dans les enregistrements DNS vous avez toujours eu vous avez toujours fait face à qu'est-ce que je mets dans ce fucking champ au TTR ne vous posez jamais la question soit votre site est en prod et à ce moment-là vous mettez la durée la plus longue possible pourquoi ? parce que du coup la résolution brécursive de cette adresse textuelle en adresse IP elle va être cachée aussi longtemps que vous allez le demander alors elle est toujours un max je crois que c'est 24 max par contre versement avant une mise en preuve ou avant une migration vous savez que vous allez changer les adresses IP de vos serveurs vous savez que vous pouvez avoir des choses à retoucher côté DNS vous le mettez au minimum comme ça il sera caché un minimum de temps et vous éliminez les effets en osgare ensuite pour le cache géographique il faut choisir un fournition de DNS unicast qu'est-ce que c'est une DNS unicast c'est que quand votre ordinateur va aller interroger la chaîne brécursive pour connaître quelle est la correspondance IP une adresse textuelle il va aller sur un serveur qui est proche géographiquement un DNS standard il est toujours au même endroit et il va chercher toujours au même endroit que vous soyez aux états unis ou vous soyez en asie ou vous soyez en angleterre il va chercher toujours un endroit si c'est un DNS français il va chercher en france avec du DNS unicast si vous êtes aux états unis il va chercher sur une copie de ce DNS qui est aux états unis et après on peut faire au niveau de la région etc donc le secret pour le cache géographique sur le DNS c'est le DNS unicast et comme on fait pour vérifier ça fonctionne bien tout ça là il y a les fameux outils de vérification de propagation de DNS des outils qui sont dans une fenêtre web qui sont très sympas et puis après je suis désolé mais on passe la ligne de commande là il n'y a que ça et je sais que vous n'y allez pas tous ok pour le DNS maintenant on a le cdn le cdn on a vu que c'est un cache géographique distant pour des ressources alors la réaction statique ou le semi-dynamique l'idée c'est quoi ? l'idée c'est de rapprocher de l'endroit de consommation ces ressources donc un cdn c'est un peu comme le DNS unicast il va avoir des points de consommation pour tous les continents si vous avez un site web dont les visiteurs la cible on va dire sur plusieurs continents c'est impératif d'utiliser un cdn d'abord parce que vous allez rapprocher vous allez diminuer la latence d'obtention de cette ressource et ensuite parce que vous allez évidemment alléger la charge de votre server web donc c'est ce que je disais c'est utilisable en production et en production ça peut avoir des effets de port en développement c'est rare il faut acheter du service c'est jamais fourni c'est toujours piliant le cdn à quelques exceptions près doté qu'il existe un fournisseur de cdn pour des ressources statiques open source et qui notamment cdnise intégralement les ripos mortes presse donc c'est à dire si vous avez besoin de gs ou de css de plugins existants plutôt que de les prendre locales sur votre server vous allez les poucher sur un cdn qui vous coûte aller le chercher sur ce cdn là c'est un cdn qui s'appelle gs deliver et comme vous vérifiez que ça vient bien que ça vient bien d'un cdn c'est facile c'est un inspecteur vous vérifiez que la source c'est bien une url différente de votre site et que ça va bien pointer vers un cdn ok pour tout le monde le proxy là on va arriver à des trucs où vous avez peut-être des gens qui ont eu des noms donc pas que vous n'ayez pas entendu avant les autres là c'est pour des ressources statiques des fragments etc c'est vraiment c'est devant le server web et c'est des choses comme par exemple varniche donc vous avez déjà entendu parler je vous le dis tout de suite c'est une utilisable production c'est pas que je m'ars en développant surtout ne branchez jamais n'utilisez jamais varniche en développement vous étiez on ne vous plantait c'est très souvent intégré à l'hébergement web mais ça peut être aussi acheté sous forme de service indépendant par exemple il y a des grandes sociétés qui fait beaucoup de cloud et qui fait beaucoup de cdn qui commence par c et qui finit par e une société américaine qui propose un service de proxy à distance une sorte de proxy virtuel ils font aussi du cdn et parfois il faut pour que ça fonctionne une extension Wordpress mais c'est pas toujours le cas comment vous vérifiez que ça fonctionne c'est dans l'inspecteur de votre navigateur cette fois-ci dans l'anglais ressources dans l'anglais ressources par contre vous allez vérifier les entêtes de réponse chacun des fichiers ou vous voulez vérifier que le proxy a bien généré soit un hit soit un miss voilà là on a vu toute la partie en un moment du serveur du serveur Wordpress on va regarder maintenant un petit peu dans un serveur Wordpress et là on va avoir quelque chose de rigolant donc voilà c'est ce que vous voyez on a vu ça et je vous avais promis quelques jolies animations voilà on vous a eu c'est super votre serveur Wordpress fait que c'est là on va se passer une grande partie de ce qui va vous faire gagner soit de la performance soit d'efficience notez qu'à ce niveau-là la résilience on en parle plus puisqu'on est sur le serveur web et c'est fini il y a plus moyen d'améliorer la résilience donc c'est spécialement sur le point 1 le point 3 les avantages du cache alors la première chose c'est le cache Wordpress vous savez il y a plein d'extensions de cache Wordpress souvent ce qui se ce qui se cache ce qui se cache derrière ce qui est derrière c'est un cache de page et de fragments ça c'est initialement donc il y en a plein il y a quelqu'un qui vient faire une conférence juste après moi qui je crois une entreprise qui parle de cache donc il y a enquête W3TC etc tous ces systèmes de cache chat c'est initialement des choses qui se permettent de faire du cache de page ou de fragments entre temps ils ont rajouté tout un tas de features ça c'est utilisable en production ou après production ça produit des effets de port en développement ça nécessite toujours une extorsion Wordpress puisque ça fonctionne au niveau de Wordpress ça c'est pas ailleurs que ça se passe et donc évidemment ça peut être des extorsions opéantes et ça se vérifie toujours par l'en tête e2mis dans le navigateur ensuite vous avez cache-objet cache-objet c'est un truc hyper rigolo imaginez vous faites vous chargez trois fois à la même URL et trois fois cette URL elle va aller dans Wordpress et elle va requérir en base de données requetter en base de données cinq fois des données particulières et puis derrière il y a un utilisateur qui fait exactement la même les cinq fois les cinq en quatre vont être refaites le cache-objet il va servir à ma cour il va servir notamment il va c'est-à-dire garder une copie temporaire des résultats la première fois que cette requête a été faite et tant qu'il estime qu'elle n'est pas périmée et donc ça fait gagner énormément de temps ça c'est indispensable vous posez par la question que vous en avez besoin et si vous ne le faites pas c'est que vous faites quelque chose de travers c'est utilisable en prenant et en développement c'est dépendant de l'hébergeur chaque hébergeur va s'épreindre avec nous pour vous proposer du cache-objet ça peut être de la PCU durée dix du même cache-et ça nécessite toujours une extension WordPress et certaines permettent d'avoir des outils de surveillance associés qui vont permettre de savoir si ça fonctionne ou pas c'est le seul moyen d'outre le fait que ça va plus vite charger la chose et ensuite vous avez le cache de code alors on va pas faire un cours sur PHP mais est-ce que vous savez comment ça fonctionne PHP PHP c'est un texte source et la première fois qu'on va atteindre qu'est-ce qui va se passer en fait on va il y a un système qui va transformer ça en belles codes il y a quelque chose qui est compréhensible non plus par l'humain qui l'a écrit mais par le serveur sur lequel ça va s'exécuter cette opération est effectuée à chaque fois que vous accédez à un fichier PHP mais si vous êtes malins vous vous dites maintenant qu'on sait ce que c'est du cache on va cacher d'ailleurs garder une copie temporaire du résultat de cette opération qu'on appelle une pseudo-compilation et ça ça fait gagner énormément de temps c'est là aussi indispensable dans tous les cas d'usage c'est utilisable en prod et en développement c'est dépendant de l'hébergeur ça s'appelle hopcache la plupart le proposent certains le font uniquement sur option peignante je donnerai des noms après pour rigole mais de manière générale c'est proposé et il y a certaines extensions qui proposent des outils de surveillance pour superviser ça aussi parce qu'autrement vous n'avez aucun moyen de regard dans ce qui se passe dans hopcache alors si je résumis ce qu'on vient de voir parce que le temps passe la première des choses c'est quand vous allez mettre en place votre... quand vous allez vous demander qu'est-ce que... où je mets le cache qu'est-ce que je dois faire c'est que vous devez vous poser la question de c'est quoi votre objectif est-ce que c'est un objectif de performance de résilience ou d'efficience est-ce que c'est juste performance, efficience ou alors résilience et performance etc et en fonction de ça vous n'allez pas dacher les systèmes de cache que vous allez utiliser on vient de voir qu'il y a 7 types de cache alors on en a vu 7 on en a bien plus que ça en fait mais ça c'est les 7 principaux ils sont soit locaux soit géographiques et enfin je vais finir par un truc que je m'étais promis de ne jamais faire alors une le cache n'est pas facultatif si vous ne cachez pas des choses dans votre site vous ne pouvez pas dire que vous avez fait vous avez fait un effort soit de performance soit de résilience soit d'efficience et j'irai même plus loin sur les 7 types de cache si vous n'implémentez pas au moins 5 c'est que vous ne faites pas bien votre boulot de concepteur ou de moteur voilà j'ai essayé de faire court synthétique parce que c'est clair pour tout le monde ok alors comme je vous ai promis quand même les animations dans tous les sens je n'ai pas résisté à la tentation d'en faire une petite dernière merci merci beaucoup Pierre pour cette présentation sur le cache avez-vous des questions à poser ? bonjour merci beaucoup pour ces présentations je me pose une question notamment sur les CDN vous en avez parlé un peu oui vous m'avez corresponsabilité aussi sur une note oui j'ai entendu un peu de son cloche là-dessus donc je voulais surtout avoir une entrevue de conception est-ce qu'il est préféré d'en utiliser un ou c'est vraiment uniquement pour des sites mondiaux est-ce que c'est pour des sites françaises ? alors effectivement c'est contre-productif pour des sites régionaux quand on parle en région c'est à l'échelle d'une plaque géographique si c'est pour faire France-Allemagne c'est pas la peine d'utiliser du CDN c'est contre-productif et c'est on n'est pas vraiment dans les corresponsabilités puisqu'on duplique les données pour rien finalement par contre dans le cas où les sites les clients potentiels de ce site des visiteurs potentiels sur plusieurs plaques continentales là il est évident qu'on améliore l'aspect est correspondable en allant pousser les copies locales et en ne faisant pas travailler tous les outreurs et tous les cartes qui sont sur le chemin merci question un peu on a su sur CDN mais aussi caches DNS éventuellement en gros qu'on file une copie de données à un organisme de matière oui est-ce que du coup sur la confidentialité sur la sécurité de précaution imprimante sur est-ce que ça implique d'en gros de mettre son site aussi potentiel ailleurs ou ce d'autre je réduction par une alors si c'est deux questions je raconte déjà la première sur le CDN on ne met jamais de données personnelles qui transitent par un CDN jamais, never c'est la première chose ensuite ça c'est en tant que concepteur de le site web ensuite il faut bien voir qu'un CDN lui va loguer les accès utilisateurs donc il va savoir que tel client à un moment donné a consulté tel site que vous avez construit mais effectivement cet intier et la plupart du temps vous avez pas un contrat contrat carré au niveau rgpn etc et donc effectivement il a dû loguer donc il y a potentiellement des données d'identification qui doivent être utilisées tout à fait ça c'était et la deuxième partie de la question qui était un peu plus touchée c'est pas que les mains passées pas savoir si c'est un tiers et que la loi n'est pas la même pour la société ça peut bien sûr mais toujours on avait un véritable opérateur de CDN européenne c'est quand même super chouette oui merci Pierre super con non tu as parlé de redis, mancache et opcache opcache apcu ça c'est pour les objets pour le cache-objet il faut tous les activer ah non un seul un seul c'est contreprenu c'est complètement variable d'abord la première chose à faire c'est qu'est-ce que te permet d'un hébergeur soit il te permet un PCU soit il te permet un R10 soit même cache-objet généralement il te permet au moins 2 des 3 et ensuite c'est qu'est-ce que quelle est la structuration de ton site web ce qu'on recommence c'est un site web qui est sur une instance unique sur un monoserveur c'est un PCU en priorité de toute façon il est plus rapide que tous les autres et quand je dis plus rapide c'est des facteurs de sang à peu près néanmoins ça peut plus fonctionner quant à des machines en cluster à PCU c'est parfait pour et donc quand tu as ton service web qui compte sur plusieurs machines eh ben là pour le coup c'est de R10 parce que R10 il est externalisé du serveur en fait et comment c'est si on est sur un monoserveur tu le sais toujours parce que c'est si tu n'es sur un multi environnement que si tu veux pain et si tu n'es explicitement demandé d'accord si on est sur un mutualisé c'est du monoserveur et donc là c'est duré à PCU à PCU à PCU sans sans aucune sans aucun doute par contre attention alors il juste une chose il y a des émergeurs si je donnerais pas de nous qui disent que à PCU est activé au niveau PHP que le module est bien activé au niveau PHP c'est vrai il est bien activé il est bien utilisable dans PHP mais ils ont fait un truc particulier dans la configuration mais pour le PHP qui fait que la PCU a aucune efficacité je donnerais pas de banque ça toujours testé c'est ça que ça fait bien merci et bravo pour les effets merci j'avais assisté une conf sur un autre word camp où la personne disait que c'était pas au retape de gérer le cache plutôt des services type calclair voilà c'est la vie c'est la vie c'est la vie je pense que ce n'est pas avoir pres gérer le cache néanmoins actuellement c'est quand même les solutions les plus efficaces qu'il y a ça les meilleures caches c'est ceux qui sont le plus bas de niveau et le plus haut niveau donc c'est typiquement ce qui est côté proxy d'un côté et de l'autre côté tout en bas de la chaîne c'est plutôt ce qu'est cache de conne et cache objet mais néanmoins un WPR4 quand vous l'installez ça bouge de votre site ça ne fait pas miracle non mais ça ne fait pas miracle moi si ce n'est pas un site qui est pourri à la base il ne va pas devenir miraculeusement magnifique pour le pourri pour le pourri ou moyen il ne va pas devenir tout de coup de véritable formule mais néanmoins si c'est bien utilisé ça a des vrais effets mais d'un point de vue clairement d'architecture et d'ingénierie logicielle c'est pas forcément le meilleur endroit où ça devrait être néanmoins c'est l'endroit où c'est le plus facile notamment pour s'abriter des produits commerciales néanmoins je suis désolé si jamais vous avez des questions peut-être après oui oui n'hésitez pas à vous évoquer et comme ça on peut en parler pendant des heures merci à vous