{"id":3496,"date":"2013-04-09T10:08:40","date_gmt":"2013-04-09T09:08:40","guid":{"rendered":"http:\/\/flaven.fr\/?p=3496"},"modified":"2013-04-09T10:08:40","modified_gmt":"2013-04-09T09:08:40","slug":"memcached-varnish-la-problematique-du-caching-pour-des-sites-a-fort-trafic","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2013\/04\/memcached-varnish-la-problematique-du-caching-pour-des-sites-a-fort-trafic\/","title":{"rendered":"Memcached, Varnish &#8211; La probl\u00e9matique du caching pour des sites \u00e0 fort trafic"},"content":{"rendered":"<p><!--  Memcached, Varnish - La probl\u00e9matique du caching pour des sites \u00e0 fort trafic  --><br \/>\n\t<!--  Memcached, Varnish, php, MySQL, caching, web, mobile, TV connect\u00e9e, performance, omnigraffle, wireframe, caching, UX, 3WDOC, Cloud, Amazon, WordPress, MAMP, Sandbox, lullabot, BBC, Simon Frost, rackspace, scalabilit\u00e9, scalability, infrastructure, exp\u00e9rience utilisateur, trafic, burst, agile, cache, apache, serveurs, proxy, mise en cache, nginx, reverse proxy  --><\/p>\n<p>\tLorsque votre site fait un tr\u00e8s fort trafic (c&#8217;est bien tout le mal que l&#8217;on vous souhaite), la question de performances des temps de r\u00e9ponse, d&#8217;affichage bref d&#8217;optimisation de l&#8217;exp\u00e9rience utilisateur (UX) de votre site ne va pas tarder \u00e0 se poser, parfois m\u00eame cruellement et \u00e0 vos d\u00e9pens. C&#8217;est que l&#8217;on nomme couramment la question du <code>caching<\/code> ou de la mise en cache.<\/p>\n<p>\tEn effet, m\u00eame si vous avez proc\u00e9der avec une d\u00e9marche &#8220;UX oriented&#8221;, p\u00e9tri au sc\u00e9nario utilisateur et au wireframing, si les performances de votre site sont mauvaises, le b\u00e9n\u00e9fice sera nul car les gens se lasseront d&#8217;attendre et se plaindront de la lenteur de votre service (en passant c&#8217;est la raison pour laquelle nous avons choisi une solution Cloud sur Amazon pour notre Webapp 3WDOC car on peut reprocher beaucoup de choses \u00e0 cette application sauf celle des performances de mise \u00e0 disposition :):), mais passons !)<\/p>\n<p>\t C&#8217;est bien la question que nous allons aborder dans cet article en essayant de voir comment \u00e0 l&#8217;aide d&#8217;un syst\u00e8me de <code>caching<\/code>, on peut am\u00e9liorer les performances de son site afin d&#8217;optimiser les temps d&#8217;acc\u00e8s et de r\u00e9ponse.<br \/>\n\tC&#8217;est un \u00e9l\u00e9ment-cl\u00e9, un facteur d\u00e9terminant dans le succ\u00e8s ou l&#8217;\u00e9chec d&#8217;adoption de votre site ou de votre webservice, qui pour le coup est une des vraies pr\u00e9occupations partag\u00e9es entre le marketing, la direction financi\u00e8re, l&#8217;\u00e9quipe de d\u00e9veloppement, le client&#8230;.etc.<\/p>\n<p>\tPour parodier le mot de Georges Clemenceau, &#8220;Le caching est une affaire trop s\u00e9rieuse pour la laisser aux seuls mains des d\u00e9veloppeurs&#8221; *<\/p>\n<p>\t<em>* En l&#8217;esp\u00e8ce le tigre parlait de la guerre &#8220;La guerre ! C\u2019est une chose trop grave pour la confier \u00e0 des militaires.&#8221;<\/em><\/p>\n\t\t\t\t\t<div class=\"textwidget-unique text\">\n\n\t\t\t\t\t        <div class=\"textwidget-photo\">\n\t\t\t\t\t                <a href=\"https:\/\/flaven.fr\/books\/developing-web-applications-with-perl-memcached-mysql-and-apache\/\" class=\"photo\" title=\"Developing Web Applications with Perl, Memcached, MySQL and Apache\"><img loading=\"lazy\" decoding=\"async\" alt=\"Developing Web Applications with Perl, Memcached, MySQL and Apache\" src=\"http:\/\/ecx.images-amazon.com\/images\/I\/51zGkYkknRL._SL160_.jpg\" width=\"127\" height=\"160\"><\/a>\n\t\t\t\t\t            <\/div>\n\t\t\t\t\t\t<div class=\"info half\">\n\t\t\t\t\t\t\t<h2 class=\"product-title\"><a class=\"head\" href=\"https:\/\/flaven.fr\/books\/developing-web-applications-with-perl-memcached-mysql-and-apache\/\" title=\"Developing Web Applications with Perl, Memcached, MySQL and Apache\">Developing Web Applications with Perl, Memcached, MySQL and Apache<\/a><\/h2>\n\t\t\t\t\t\t\t\n\t\t\t\t\t        <p class=\"product-excerpt\">Des explications tr\u00e8s compl\u00e8tes sur l'utilisation efficiente de memcached comme le titre du livre l'indique.<\/p>\n\t\t\t\t\t\t\t\tGenre(s) : <a href=\"https:\/\/flaven.fr\/book-type\/apache-serveur\/\" rel=\"tag\">Apache<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/applications\/\" rel=\"tag\">Applications<\/a>, <a href=\"https:\/\/flaven.fr\/book-type\/memcached\/\" rel=\"tag\">Memcached<\/a><br>Auteur(s) : <a href=\"https:\/\/flaven.fr\/book-author\/patrick-galbraith\/\" rel=\"tag\">Patrick Galbraith<\/a><br>Edition(s) : <a href=\"https:\/\/flaven.fr\/book-description\/john-wiley-sons-ltd\/\" rel=\"tag\">John Wiley &amp; Sons Ltd<\/a><br>\n\t\t\t\t\t<div class=\"but-wrap\"><a href=\"http:\/\/www.amazon.fr\/Developing-Applications-Memcached-MySQL-Apache\/dp\/0470414642%3FSubscriptionId%3DAKIAJYB2QGGQOTHQLRPA%26tag%3Dhecubenet-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0470414642\" class=\"button\"><span><i class=\"more\"><\/i>+ d'infos<\/span><\/a><\/div>\n\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\n<p>\tIl existe deux solutions sur le march\u00e9 qui vous permette d&#8217;am\u00e9liorer consid\u00e9rablement ces performances d&#8217;acc\u00e8s \u00e0 votre site. Ces deux solutions sont :  <code>Varnish<\/code> et <code>Memcached<\/code>.<br \/>\n\tOn va d&#8217;abord pr\u00e9senter bri\u00e8vement \u00e0 quoi sert la caching, ce que propose ces solutions <code>memcached<\/code> et <code>varnish<\/code>. Puis on verra rapidement comment impl\u00e9menter <code>memcached<\/code> et <code>varnish<\/code> de sous MAMP, afin de cr\u00e9er un environnement de d\u00e9veloppement ou <code>sandbox<\/code> digne de ce nom. Enfin, \u00e0 l&#8217;aide de nos outils favoris de wireframing, omnigraffle, on tentera d&#8217;obtenir la repr\u00e9sentation de l&#8217;infrastructure id\u00e9al, un bon sch\u00e9ma vaut toujours mieux que de de fastidieuses explications. En toute fin, on donne un certains nombre de liens pour utiliser ces solutions sous WordPress notamment, dont les performances initiales de WP ne sont pas excellentes, il faut bien l&#8217;admettre.<\/p>\n<h4>Quelques articles d&#8217;excellence avant de commencer<\/h4>\n<p>\tComme souvent, appr\u00e9hender un sujet aussi vaste et important que la <code>caching<\/code> r\u00e9clame de s&#8217;informer et \u00e9ventuellement de trouver les bonnes explications avec de pr\u00e9f\u00e9rence des cas pratiques. Nous e avons trouver et on vous les livre d\u00e9s \u00e0 pr\u00e9sent. On vous invite donc \u00e0 lire :<\/p>\n<p>\t<!-- top articles  --><\/p>\n<ul>\n<li>Cet article en anglais r\u00e9dig\u00e9 par une des personnes du staff technique de la BBC, Simon Frost, qui d\u00e9taille dans les grandes lignes, la mani\u00e8re dont la BCC a proc\u00e9d\u00e9 pour am\u00e9liorer les performances du site de la BBC notamment lors de la mise en production de leur iPlayer avec l&#8217;objectif avou\u00e9 de rendre la chose rapide \u00e0 utiliser notamment la partie d\u00e9di\u00e9 au <code>caching<\/code> intitul\u00e9e <code>We cache a lot<\/code>\n<p>\t\tScaling the BBC iPlayer to handle demand (excellent)<br \/><a href=\"http:\/\/www.bbc.co.uk\/blogs\/bbcinternet\/2010\/07\/scaling_the_bbc_iplayer_to_han.html\" target=\"_blank\">http:\/\/www.bbc.co.uk\/blogs\/bbcinternet\/2010\/07\/scaling_the_bbc_iplayer_to_han.html<\/a>\n\t\t<\/li>\n<li>2 excellents articles de Nate Haug (<a href=\"https:\/\/twitter.com\/lullabot\" target=\"_blank\">@lullabot<\/a>), un &#8220;Senior Drupal Architect&#8221; de renom d&#8217;une soci\u00e9t\u00e9 nomm\u00e9e Lullabot, bas\u00e9 \u00e0 Providence (Rhode Island) qui explique de mani\u00e8re didactique comment installer en local les deux solutions, nous nous sommes abondamment inspir\u00e9s de ces tutoriaux, qu&#8217;il en soit remerci\u00e9.\n<ul>\n<li>Installing Varnish on Mac OS X (with MAMP or any other server) (excellent)<br \/><a href=\"http:\/\/www.lullabot.com\/articles\/installing-varnish-mac-os-x-mamp\" target=\"_blank\">http:\/\/www.lullabot.com\/articles\/installing-varnish-mac-os-x-mamp<\/a><\/li>\n<li>Setup a Memcached-Enabled MAMP Sandbox Environment (excellent)<br \/><a href=\"http:\/\/www.lullabot.com\/articles\/setup-memcached-mamp-sandbox-environment\" target=\"_blank\">http:\/\/www.lullabot.com\/articles\/setup-memcached-mamp-sandbox-environment<\/a><\/li>\n<\/ul>\n<\/li>\n<li>L&#8217;article le plus complet que nous ayons en fran\u00e7ais de St\u00e9phane Raymond <a href=\"https:\/\/twitter.com\/sraymond38\/\" target=\"_blank\">@sraymond38<\/a>. Un article vraiment complet, qui envoie du bois, avec sch\u00e9mas, explications&#8230; Lumineux<br \/>\n\tCaching avanc\u00e9 et strat\u00e9gie d\u2019optimisation pour des applications web \u00e0 forte charge (excellent et en fran\u00e7ais)<br \/><a href=\"http:\/\/www.stephane-raymond.com\/blog\/webperf\/caching-avance\/\" target=\"_blank\">http:\/\/www.stephane-raymond.com\/blog\/webperf\/caching-avance\/<\/a>\n<\/li>\n<li>Cette article qui d\u00e9taille tout le processus de cr\u00e9ation sous Drupal de bmj.com de la m\u00e9thode Agile \u00e0 l&#8217;infrastructure d\u00e9ploy\u00e9. Un &#8220;must&#8221;.<br \/>\n\t\tCaching avanc\u00e9 et strat\u00e9gie d\u2019optimisation pour des applications web \u00e0 forte charge<br \/><a href=\"http:\/\/drupal.org\/node\/1557636\" target=\"_blank\">http:\/\/drupal.org\/node\/1557636<\/a>\n<\/li>\n<\/ul>\n<p>\t<!-- \/\/ top articles --><\/p>\n<h4>De l&#8217;importance du <code>caching<\/code><\/h4>\n<p>\tLe caching, c&#8217;est primordial ! En effet, les sites, les applications Web ne sont que donn\u00e9es. Ainsi, \u00eatre capable de traiter <strong>RAPIDEMENT<\/strong> les donn\u00e9es, qu&#8217;il s&#8217;agisse de donn\u00e9es stock\u00e9es saisies par un utilisateur ou de la r\u00e9cup\u00e9ration de donn\u00e9es \u00e0 afficher, est la fonction principale d&#8217;une application web ou d&#8217;un site. Le probl\u00e8me le plus important est donc de faciliter autant que possible un acc\u00e8s rapide et efficace \u00e0 ces donn\u00e9es. Questionnement qui inclut un plus vaste sujet encore qu&#8217;est la <code>scalability<\/code> ou &#8220;scalabilit\u00e9&#8221;, disons le dimensionnent progressif et maitris\u00e9 d&#8217;un point de vue technique et financier de votre web app ou site. Un des gros avantages du Cloud l\u00e0 encore.<br \/>\n\tPour m\u00e9moire, nous avions aborder ce point dans un article pr\u00e9c\u00e9dent :<\/p>\n<ul>\n<li>Cloud, E-commerce, entreprises \u2013 les leviers et les freins \u00e0 l\u2019adoption du Cloud par les entreprises et particuli\u00e8rement dans le domaine E-commerce\n<p>\t\t<a href=\"http:\/\/social.hecube.net\/2012\/10\/cloud-e-commerce-entreprises-les-leviers-et-les-freins-a-ladoption-du-cloud-par-les-entreprises-et-particulierement-dans-le-domaine-e-commerce\/\" target=\"_blank\">http:\/\/social.hecube.net\/2012\/10\/cloud-e-commerce-entreprises-les-leviers-et-les-freins-a-ladoption-du-cloud-par-les-entreprises-et-particulierement-dans-le-domaine-e-commerce\/<\/a><\/li>\n<\/ul>\n<p>\tA la probl\u00e9matique technique de <code>caching<\/code> s&#8217;attache d&#8217;autres enjeux \u00e0 ne pas n\u00e9gliger, notamment l&#8217;enjeux financier. La Base de Donn\u00e9es (BDD) est sans aucun le r\u00e9ceptacle d&#8217;une grande partie des donn\u00e9es n\u00e9cessaires au fonctionnement d&#8217;un site ou d&#8217;une web app. Or le traitement ou la r\u00e9cup\u00e9ration de ces donn\u00e9es depuis une BDD a un co\u00fbt. Il va sans dire que plus le site conna\u00eet un fort trafic, plus la d\u00e9pense concernant l&#8217;infrastructure sera exponentielle. Il faut donc rapidement trouver une solution &#8220;cost-effective&#8221; pour ne pas \u00eatre la victime de son succ\u00e8s.<\/p>\n<p>\tIl existe 2 typologie de donn\u00e9es, celles qui changent constamment et fr\u00e9quemment tel les donn\u00e9es utilisateur ou celles de session et puis les autres, celles qui ne changent que rarement voir pas du tout. C&#8217;est sur ce dernier type de donn\u00e9es que la mise en place d&#8217;un syst\u00e8me <code>caching<\/code> peut avoir un impact positif. En effet, il est \u00e9minemment b\u00e9n\u00e9fique de ne pas avoir recours de mani\u00e8re syst\u00e9matique \u00e0 une base de donn\u00e9es en vue d&#8217;obtenir ces m\u00eames donn\u00e9es. <\/p>\n<p>\tPour donner d\u00e9j\u00e0 un aper\u00e7u rapide des objectifs que l&#8217;on peut se fixer lorsque on met en place un syst\u00e8me de <code>caching<\/code>, on va montrer comment s&#8217;appuyer sur <b>Varnish<\/b> pour faire du &#8220;caching&#8221; de contenu statique, le plus demand\u00e9, et sur <b>memcached<\/b> pour les r\u00e9sultats de requ\u00eates SQL, les plus fr\u00e9quentes.<\/p>\n<h4>Cloud et Caching<\/h4>\n<p>\tUne premi\u00e8re pr\u00e9cision concernant le Cloud. Que vous soyez sur le Cloud ne change pas grand chose \u00e0 la probl\u00e9matique de <code>caching<\/code>. Etre sur le Cloud est certes une tr\u00e8s bonne chose, en effet votre infrastructure est <code>scalable<\/code>, vous disposez si votre budget le permet de ressources serveur quasi in\u00e9puisables ( instance de stockage, instance MySQL&#8230;.etc) toutefois vous ne ferez m\u00eame en \u00e9tant sur le Cloud, l&#8217;\u00e9conomie sur une r\u00e9flexion sur le <code>caching<\/code>.<\/p>\n<p>\tOn peut la voir d&#8217;ailleurs dans ce sch\u00e9ma, gracieusement mis \u00e0 disposition par <code>rackspace.com<\/code> qui pr\u00e9sente une possible architecture sur leur infrastructure Cloud que la solution de <code>caching<\/code> y est int\u00e9gr\u00e9 \u00e0 chaque fois que vous soyez un site avec beaucoup de contenu, de e-commerce ou sous wordpress.<\/p>\n<p>\t<b>Le sch\u00e9ma de l&#8217;architecture Cloud pour un CMS (Content Management System)<\/b><br \/>\n\tUne possible architecture Cloud pour un CMS comme <strong>Drupal<\/strong>. Pour cette configuration, l&#8217;accent est mis sur une abondante mise en cache, avec <strong>Varnish<\/strong> pour la mise en cache de contenu statique et <strong>Memcached<\/strong> pour la mise en cache de requ\u00eate de base de donn\u00e9es.<\/p>\n<p>\tCette configuration permet \u00e9galement de redimensionner horizontalement rapidement pour faire face \u00e0 des pics de trafic, typiquement comme des \u00e9v\u00e9nements ou un trafic soutenu et constamment \u00e9lev\u00e9.<\/p>\n<p>\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/04\/caching_issue_sketch_content_management.jpg\" width=\"600\" height=\"330\" alt=\"Memcached, Varnish - La probl\u00e9matique du caching pour des sites \u00e0 fort trafic\"><br \/>\n\t<em>Copyright &copy; rackspace.com<\/em><\/p>\n<p>\t<b>Le sch\u00e9ma de l&#8217;architecture Cloud pour WordPress<\/b><br \/>\n\tCi-dessous, un exemple d&#8217;architecture Cloud sur la mani\u00e8re dont pourrait \u00eatre configur\u00e9 un site sous WordPress.<\/p>\n<p>\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/04\/caching_issue_sketch_wp.jpg\" width=\"600\" height=\"342\" alt=\"Memcached, Varnish - La probl\u00e9matique du caching pour des sites \u00e0 fort trafic\"><br \/>\n\t<em>Copyright &copy; rackspace.com<\/em><\/p>\n<p>\t<i>On vous invite \u00e0 d\u00e9couvrir les autres excellents sch\u00e9mas propos\u00e9s par <code>rackspace.com<\/code> sur tous les types d&#8217;architecture Cloud selon vos ambitions et votre coeur de m\u00e9tier.<\/i><\/p>\n<p>\t<em>Source : <a href=\"http:\/\/www.rackspace.com\/knowledge_center\/article\/rackspace-open-cloud-reference-architecture\" target=\"_blank\">http:\/\/www.rackspace.com\/knowledge_center\/article\/rackspace-open-cloud-reference-architecture<\/a><\/em><\/p>\n<h4>Memcached<\/h4>\n<p>\tmemcached est un syst\u00e8me de cache en m\u00e9moire distribu\u00e9e haute-performance. Il s&#8217;agit essentiellement d&#8217;un serveur de m\u00e9moire simple qui fournit une couche de mise en cache pour les applications en vue stocker des donn\u00e9es afin d&#8217;all\u00e9ger la charge sur la base de donn\u00e9es. memcached fournit \u00e9galement une table de &#8220;hash&#8221; (hash lookup table) pour une recherche rapide dans le retraitement des donn\u00e9es.<\/p>\n<p>\tLes donn\u00e9es stock\u00e9es dans memcached ne restent pas ! Ce qui signifie que celles-ci disparaissent lorsque le serveur memcached est arr\u00eat\u00e9 ou red\u00e9marr\u00e9. Par ailleurs, il n&#8217;y a pas de basculement (failover) ou d&#8217;authentification, c&#8217;est donc l&#8217;application utilisant memcached qui est en charge si l&#8217;on peut dire de la mise en oeuvre de la mani\u00e8re dont les donn\u00e9es sont g\u00e9r\u00e9es et mises \u00e0 jour. <\/p>\n<p>\tmemcached a une structure qui est connu comme un LRU (Least Recently Used) cache, de sorte que les donn\u00e9es stock\u00e9es qui est la plus ancienne et moins accessibles seront remplac\u00e9s par de nouveaux \u00e9l\u00e9ments lorsque la capacit\u00e9 de m\u00e9moire memcached est atteint. La structure de mise en cache de memcached est connu sous le nom de <code>LRU cache<\/code>. (LRU pour <code>Least Recently Used<\/code>). Ce qui implique que les donn\u00e9es stock\u00e9es les plus anciennes et les moins accessibles seront renouvel\u00e9s par de nouveaux \u00e9l\u00e9ments lorsque la capacit\u00e9 de m\u00e9moire memcached est atteinte. <\/p>\n<p>\tAfin d&#8217;affiner la gestion dans la dur\u00e9e de mise en cache, memcached fournit des d\u00e9lais d&#8217;expiration (expiration timeouts) pour les donn\u00e9es stock\u00e9es, il est ainsi possible de choisir si les donn\u00e9es qui seront stock\u00e9es, expirent au bout d&#8217;un temps d\u00e9fini ou n&#8217;expirent jamais par exemple.<\/p>\n<p>\tmemcached remplace les donn\u00e9es qui ont expir\u00e9, puis remplacer les donn\u00e9es les moins r\u00e9cemment utilis\u00e9es, lorsque sa capacit\u00e9 de m\u00e9moire est atteinte. memcached peuvent s&#8217;ex\u00e9cuter dans n&#8217;importe quel type de configuration: soit sur un ou plusieurs serveurs, ou m\u00eame dans plusieurs instances sur le m\u00eame serveur. memcached remplacera donc en priorit\u00e9 les donn\u00e9es expir\u00e9es ou bien si ses capacit\u00e9s m\u00e9moires sont atteintes, memcached remplacera les donn\u00e9es utilis\u00e9es les plus anciennes.<\/p>\n<p>\tIl existe une grande souplesse dans la configuration de memcached : le syst\u00e8me peut en effet s&#8217;ex\u00e9cuter soit sur un ou plusieurs serveurs, ou \u00e0 l&#8217;aide de plusieurs instances sur le m\u00eame serveur.<\/p>\n<p>\tComment le &#8220;truc&#8221; fonctionne exactement. Le serveur de cache fournit simplement une structure de stockage o\u00f9 les donn\u00e9es sont stock\u00e9es \u00e0 l&#8217;aide d&#8217;une valeur cl\u00e9 (key value) avec en plus une table de &#8220;hash&#8221; (hash lookup table) qui permet une recherche rapide et l&#8217;extraction des donn\u00e9es. Toute l&#8217;intelligence du syst\u00e8me de memcached, si l&#8217;on peut dire, tient dans la liaison entre  une valeur de hachage de la cl\u00e9 pour faire r\u00e9f\u00e9rence \u00e0 ce qui est stock\u00e9 ou r\u00e9cup\u00e9r\u00e9.<\/p>\n<p>\t\tmemcached utilise un algorithme de hachage qui d\u00e9termine notamment \u00e0 quel serveur la requ\u00eate d&#8217;une ou plusieurs cl\u00e9s doit \u00eatre envoy\u00e9e. Une fois d\u00e9termin\u00e9, quel serveur doit fournir la r\u00e9ponse, les requ\u00eates sont envoy\u00e9es en parall\u00e8le aux serveurs appropri\u00e9s. Chaque serveur utilise les valeur cl\u00e9s de recherche de sa table de &#8220;hash&#8221; ( la hash lookup table) pour r\u00e9cup\u00e9rer l&#8217;\u00e9l\u00e9ment stock\u00e9 et renvoyer les r\u00e9sultats.<\/p>\n<p>\tmemcached est extr\u00eamement rapide \u00e0 la fois pour stocker et r\u00e9cup\u00e9rer des donn\u00e9es car le syst\u00e8me utilise de la m\u00e9moire et non de l&#8217;espace disque pour stocker les donn\u00e9es. Enfin, pour fonctionner, memcached ne r\u00e9clame que peu de CPU et peut \u00eatre ex\u00e9cut\u00e9 sur le m\u00eame serveur que le serveur web Apache, ou sur tout autre serveur ayant des capacit\u00e9s de m\u00e9moire disponibles (spare memory).  <\/p>\n<p><i>Quelques tr\u00e8s bons sch\u00e9mas d&#8217;explications existent sur ce site pour comprendre dans ces grandes lignes le fonctionnement de memcached. Voir <a href=\"http:\/\/www.9lessons.info\/2012\/02\/memcached-with-php.html\" target=\"_blank\">http:\/\/www.9lessons.info\/2012\/02\/memcached-with-php.html<\/a><\/i><\/p>\n<h4>Varnish<\/h4>\n<p>Comme nous l&#8217;avons vu pr\u00e9c\u00e9demment, la mise en cache est omnipr\u00e9sente c\u00f4t\u00e9 serveur comme c\u00f4t\u00e9 client (navigateur) ainsi le navigateur dispose d&#8217;un cache, la plupart des serveurs de proxy font du cache, de m\u00eame que les serveurs web tel Apache ou nginx peuvent \u00e9ventuellement faire de la mise en cache.<\/p>\n<p>Varnish est un &#8220;reverse proxy server&#8221;. Varnish, situ\u00e9 en &#8220;front&#8221; du serveur web, sert le contenu du web. Comme tous les &#8220;reverse proxy server&#8221;, Varnish est \u00e9troitement jumel\u00e9 avec le serveur web et interagit avec celui-ci.<\/p>\n<p>Par exemple, une page mise en cache peut \u00eatre rafra\u00eechi avec une commande de purge depuis le backend de votre serveur, ce qui est bien s\u00fbr impossible \u00e0 faire c\u00f4t\u00e9 navigateur\/client cela va de soi ! Ce qu&#8217;il faut comprendre, c&#8217;est que c&#8217;est vous maitrisez une mise en cache si tentez que vous administrez votre machine.<\/p>\n<p>Par ailleurs, les performances de Varnish sont excellentes, le contenu web est servi de mani\u00e8re optimale. Avec cette mise en cache, vous pouvez faire face \u00e0 des pics de trafic ou travailler sur des niveaux de trafic tr\u00e8s \u00e9lev\u00e9 sans d\u00e9multiplier la taille de votre infrastructure. Varnish vous \u00e9vite donc d&#8217;avoir un taux de rebond \u00e9lev\u00e9, en gros tout vos visiteurs verront les pages, c&#8217;est du moins l&#8217;objectif.<\/p>\n<p>\t\tBien s\u00fbr, Varnish n&#8217;est pas le seul service de mise en cache mais de nombreux site \u00e0 tr\u00e8s fort trafic l&#8217;on adopt\u00e9, la BBC par exemple. Apparemment, le cr\u00e9ateur du Varnish, Poul Henning Kamp, n&#8217;a eu de cesse d&#8217;am\u00e9liorer les performances et d&#8217;offrir une grande souplesse de configuration. Varnish poss\u00e8de son propres langage de configuration, le <code>VCL<\/code> et il est optimis\u00e9 pour du mat\u00e9riel tournant sous Linux ou FreeBSD.<\/p>\n<p>\t\t<b>Conclusion : Au vu de tr\u00e8s nombreux articles et de sites \u00e0 tr\u00e8s fort trafic qui utilisent ce tandem gagnant, varnish + mecached, pour la mise en cache et les b\u00e9n\u00e9fices qui peuvent en \u00eatre retir\u00e9s. Cela semble \u00eatre ma solution qui s&#8217;impose sur les probl\u00e8mes de <code>caching<\/code>.<\/b><\/p>\n<h4>Cr\u00e9er une vue d&#8217;ensemble d&#8217;une infrastructure<\/h4>\n<p>\tNotre sch\u00e9ma est un &#8220;mix&#8221; pas forc\u00e9ment forcement perfectible ! Nous ne sommes pas admin syst\u00e8me de quelques-unes des sch\u00e9mas trouv\u00e9s sur le web. Comme souvent ces sch\u00e9mas sont esth\u00e9tiquement didactiques mais assez moches ! On vous propose dans notre extr\u00eame bont\u00e9, une libraire pour le <code>wireframing<\/code> sous Omnigraffle d&#8217;une proposition d&#8217;architecture &#8220;id\u00e9ale&#8221; pour un site \u00e0 fort trafic. Les sources d&#8217;inspiration sont :<\/p>\n<ul>\n<li><a href=\"http:\/\/drupal.org\/node\/1557636\" target=\"_blank\">http:\/\/drupal.org\/node\/1557636<\/a><\/li>\n<li><a href=\"http:\/\/www.stephane-raymond.com\/blog\/webperf\/caching-avance\/\" target=\"_blank\">http:\/\/www.stephane-raymond.com\/blog\/webperf\/caching-avance\/<\/a><\/li>\n<\/ul>\n<p>\t<b>Notre proposition d&#8217;architecture, d\u00e9sign\u00e9 avec Omnigraffle<\/b><\/p>\n<p>\t<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/04\/caching_issue_scheme_lib_hecube_3.png\" width=\"559\" height=\"782\" alt=\"Memcached, Varnish - La probl\u00e9matique du caching pour des sites \u00e0 fort trafic\"><\/p>\n<blockquote>\n<p>\n\t\tLa librairie de notre proposition d&#8217;architecture \u00e0 t\u00e9l\u00e9charger au format <code>.zip<\/code> ici. Pour fonctionner, elle n\u00e9cessite d\u2019utiliser OmniGraffle Pro 5.4.2 ou +. <a href=\"http:\/\/social.hecube.net\/wp-content\/uploads\/2013\/04\/caching_issue_scheme_lib_hecube_3.zip\" target=\"_blank\">T\u00e9l\u00e9charger caching_issue_scheme_lib_hecube_3.zip<\/a><\/p>\n<\/blockquote>\n<p>\t<i><br \/>\n\tPour ouvrir le sch\u00e9ma de notre proposition d&#8217;architecture, vous aurez besoin d&#8217;un &#8220;mix&#8221; des librairies suivantes sous Omnigraffle :<\/i><\/p>\n<ul>\n<li>Konigi Wireframe<br \/><a href=\"http:\/\/konigi.com\/tools\/omnigraffle-wireframe-stencils\" target=\"_blank\">http:\/\/konigi.com\/tools\/omnigraffle-wireframe-stencils<\/a><\/li>\n<li>Actifio Icon Set 2012<br \/><a href=\"https:\/\/www.graffletopia.com\/stencils\/945\" target=\"_blank\">https:\/\/www.graffletopia.com\/stencils\/945<\/a><\/li>\n<li>Cisco Universal (iOS and Mac OS)<br \/><a href=\"https:\/\/www.graffletopia.com\/stencils\/682\" target=\"_blank\">https:\/\/www.graffletopia.com\/stencils\/682<\/a><\/li>\n<li>Et d&#8217;un panach\u00e9 des librairies Cisco<br \/><a href=\"https:\/\/www.graffletopia.com\/search\/cisco\" target=\"_blank\">https:\/\/www.graffletopia.com\/search\/cisco<\/a><\/li>\n<\/ul>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>Scaling the BBC iPlayer to handle demand (excellent)<br \/><a href=\"http:\/\/www.bbc.co.uk\/blogs\/bbcinternet\/2010\/07\/scaling_the_bbc_iplayer_to_han.html\" target=\"_blank\">http:\/\/www.bbc.co.uk\/blogs\/bbcinternet\/2010\/07\/scaling_the_bbc_iplayer_to_han.html<\/a><\/li>\n<li>Solution Configurator<br \/><a href=\"http:\/\/www.rackspace.co.uk\/solutions-configurator\/\" target=\"_blank\">http:\/\/www.rackspace.co.uk\/solutions-configurator\/<\/a><\/li>\n<li>Rackspace Open Cloud Reference Architecture<br \/><a href=\"http:\/\/www.rackspace.com\/knowledge_center\/article\/rackspace-open-cloud-reference-architecture\" target=\"_blank\">http:\/\/www.rackspace.com\/knowledge_center\/article\/rackspace-open-cloud-reference-architecture<\/a><\/li>\n<li>Getting Started with Varnish (excellent)<br \/><a href=\"http:\/\/phpmaster.com\/getting-started-with-varnish\/\" target=\"_blank\">http:\/\/phpmaster.com\/getting-started-with-varnish\/<\/a><\/li>\n<li>Scaling automatic web optimization with mod_pagespeed and memcached<br \/><a href=\"http:\/\/googledevelopers.blogspot.fr\/2012\/11\/scaling-automatic-web-optimization-with.html\" target=\"_blank\">http:\/\/googledevelopers.blogspot.fr\/2012\/11\/scaling-automatic-web-optimization-with.html<\/a><\/li>\n<li>Improving Performance of Your Magento Store from Technical Perspective<br \/><a href=\"http:\/\/quartsoft.com\/blog\/201211\/improving-performance-of-magento-store\" target=\"_blank\">http:\/\/quartsoft.com\/blog\/201211\/improving-performance-of-magento-store<\/a><\/li>\n<li>Varnish \u2013 a caching guide<br \/><a href=\"http:\/\/www.forlinux.co.uk\/expertise\/blog\/2012\/01\/06\/varnish-%E2%80%93-a-caching-guide\/\" target=\"_blank\">http:\/\/www.forlinux.co.uk\/expertise\/blog\/2012\/01\/06\/varnish-%E2%80%93-a-caching-guide\/<\/a><\/li>\n<li>Introduction to Varnish<br \/><a href=\"http:\/\/www.c50k.com\/varnish-cache.html\" target=\"_blank\">http:\/\/www.c50k.com\/varnish-cache.html<\/a><\/li>\n<li>Installing Varnish on Mac OS X (with MAMP or any other server) (excellent)<br \/><a href=\"http:\/\/www.lullabot.com\/articles\/installing-varnish-mac-os-x-mamp\" target=\"_blank\">http:\/\/www.lullabot.com\/articles\/installing-varnish-mac-os-x-mamp<\/a><\/li>\n<li>Setup a Memcached-Enabled MAMP Sandbox Environment (excellent)<br \/><a href=\"http:\/\/www.lullabot.com\/articles\/setup-memcached-mamp-sandbox-environment\" target=\"_blank\">http:\/\/www.lullabot.com\/articles\/setup-memcached-mamp-sandbox-environment<\/a><\/li>\n<li>Le site officiel de Varnish Community<br \/><a href=\"https:\/\/www.varnish-cache.org\/\" target=\"_blank\">https:\/\/www.varnish-cache.org\/<\/a><\/li>\n<li>British Medical Journal &#8211; bmj.com (excellent)<br \/><a href=\"http:\/\/drupal.org\/node\/1557636\" target=\"_blank\">http:\/\/drupal.org\/node\/1557636<\/a><\/li>\n<li>Proxy inverse ou reverse proxy<br \/><a href=\"http:\/\/fr.wikipedia.org\/wiki\/Proxy_inverse\" target=\"_blank\">http:\/\/fr.wikipedia.org\/wiki\/Proxy_inverse<\/a><\/li>\n<li>Caching avanc\u00e9 et strat\u00e9gie d\u2019optimisation pour des applications web \u00e0 forte charge<br \/><a href=\"http:\/\/www.stephane-raymond.com\/blog\/webperf\/caching-avance\/\" target=\"_blank\">http:\/\/www.stephane-raymond.com\/blog\/webperf\/caching-avance\/<\/a><\/li>\n<h4>La caching dans WordPress<\/h4>\n<li>The Ultimate Quickstart Guide to Speeding Up Your WordPress Site (excellent)<br \/><a href=\"http:\/\/wp.tutsplus.com\/tutorials\/the-ultimate-quickstart-guide-to-speeding-up-your-wordpress-site\/\" target=\"_blank\">http:\/\/wp.tutsplus.com\/tutorials\/the-ultimate-quickstart-guide-to-speeding-up-your-wordpress-site\/<\/a><\/li>\n<li>WordPress + Memcached<br \/><a href=\"http:\/\/scotty-t.com\/2012\/01\/20\/wordpress-memcached\/\" target=\"_blank\">http:\/\/scotty-t.com\/2012\/01\/20\/wordpress-memcached\/<\/a><\/li>\n<li>Tag: memcached sur l&#8217;espace de plugins de WordPress.org<br \/><a href=\"http:\/\/wordpress.org\/extend\/plugins\/tags\/memcached\" target=\"_blank\">http:\/\/wordpress.org\/extend\/plugins\/tags\/memcached<\/a><\/li>\n<li>Le plugin Memcached Object Cache<br \/><a href=\"http:\/\/wordpress.org\/extend\/plugins\/memcached\/\" target=\"_blank\">http:\/\/wordpress.org\/extend\/plugins\/memcached\/<\/a><\/li>\n<li>How To Setup And Use Memcached With WordPress<br \/><a href=\"http:\/\/techie-buzz.com\/webmaster-tips\/how-to-setup-memcached-ubuntu-wordpress.html\" target=\"_blank\">http:\/\/techie-buzz.com\/webmaster-tips\/how-to-setup-memcached-ubuntu-wordpress.html<\/a><\/li>\n<li>VarnishAndWordpress<br \/><a href=\"https:\/\/www.varnish-cache.org\/trac\/wiki\/VarnishAndWordpress\" target=\"_blank\">https:\/\/www.varnish-cache.org\/trac\/wiki\/VarnishAndWordpress<\/a><\/li>\n<li>WordPress Varnish<br \/><a href=\"http:\/\/wordpress.org\/extend\/plugins\/wordpress-varnish\/\" target=\"_blank\">http:\/\/wordpress.org\/extend\/plugins\/wordpress-varnish\/<\/a><\/li>\n<li>Tag: varnish sur l&#8217;espace de plugins de WordPress.org<br \/><a href=\"http:\/\/wordpress.org\/extend\/plugins\/tags\/varnish\" target=\"_blank\">http:\/\/wordpress.org\/extend\/plugins\/tags\/varnish<\/a><\/li>\n<li>How to Install and Customize Varnish for WordPress<br \/><a href=\"http:\/\/www.problogdesign.com\/wordpress\/how-to-install-and-customize-varnish-for-wordpress\/\" target=\"_blank\">http:\/\/www.problogdesign.com\/wordpress\/how-to-install-and-customize-varnish-for-wordpress\/<\/a><\/li>\n<li>Booster votre blog WordPress avec Varnish | Le blog de NicoLargoLe blog de NicoLargo<br \/><a href=\"http:\/\/blog.nicolargo.com\/2010\/10\/booster-votre-blog-wordpress-avec-varnish.html\" target=\"_blank\">http:\/\/blog.nicolargo.com\/2010\/10\/booster-votre-blog-wordpress-avec-varnish.html<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Lorsque votre site fait un tr\u00e8s fort trafic (c&#8217;est bien tout le mal que l&#8217;on vous souhaite), la question de performances des temps de r\u00e9ponse,&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2013\/04\/memcached-varnish-la-problematique-du-caching-pour-des-sites-a-fort-trafic\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Memcached, Varnish &#8211; La probl\u00e9matique du caching pour des sites \u00e0 fort trafic<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9367,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Memcached et Varnish r\u00e9solvent la probl\u00e9matique du caching pour des sites \u00e0 fort trafic. Optimisez les temps de r\u00e9ponse et am\u00e9liorez l'UX avec ces outils.","bf_ai_og_title":"Caching: Memcached, Varnish","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3440,3444,3445,3447,3449,3450,3451,3435,3452],"tags":[578,2194,478,579,580,581,582,583,2200,584,585,586,416,72,587,31,2211,588,521,589,20,590,591,592,593,594,595,596,597,162,598,2192,599,2182,475,2223],"class_list":["post-3496","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-infrastructure","category-programming-databases","category-seo-web-marketing","category-technology-trends","category-tutorials-how-to","category-ux-product-design","category-web-design-front-end","category-web-development","category-wordpress-cms","tag-3wdoc","tag-agile","tag-amazon","tag-apache","tag-bbc","tag-burst","tag-cache","tag-caching","tag-cloud","tag-experience-utilisateur","tag-infrastructure","tag-lullabot","tag-mamp","tag-memcached","tag-mise-en-cache","tag-mobile","tag-mysql","tag-nginx","tag-omnigraffle","tag-performance","tag-php","tag-proxy","tag-rackspace","tag-reverse-proxy","tag-sandbox","tag-scalabilite","tag-scalability","tag-serveurs","tag-simon-frost","tag-trafic","tag-tv-connectee","tag-ux-experience-utilisateur","tag-varnish","tag-web","tag-wireframe","tag-wordpress"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-Uo","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/04\/caching_issue_b_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/3496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=3496"}],"version-history":[{"count":0,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/3496\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9367"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=3496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=3496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=3496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}