{"id":88,"date":"2013-01-12T14:33:06","date_gmt":"2013-01-12T12:33:06","guid":{"rendered":"http:\/\/www.olivierdoucet.info\/blog\/?p=88"},"modified":"2013-01-17T15:40:31","modified_gmt":"2013-01-17T13:40:31","slug":"tests-approfondis-de-g-wan","status":"publish","type":"post","link":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/","title":{"rendered":"Tests approfondis de G-WAN"},"content":{"rendered":"<p>Il y a quelques jours, j&rsquo;ai d\u00e9couvert G-WAN, un nouveau serveur web \u00ab\u00a0r\u00e9volutionnaire\u00a0\u00bb d&rsquo;apr\u00e8s son auteur. Ce dernier annonce des performances assez hallucinantes, m\u00eame face \u00e0 Apache, NginX ou Lighttpd qui sont les serveurs web les plus connus.<\/p>\n<p>Ce qui m&rsquo;a vraiment \u00e9tonn\u00e9, c&rsquo;est la diff\u00e9rence de performance annonc\u00e9e :<\/p>\n<p><a href=\"http:\/\/gwan.com\/benchmark\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-89\" alt=\"G-WAN benchmark\" src=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png\" width=\"612\" height=\"294\" srcset=\"https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png 612w, https:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k-300x144.png 300w\" sizes=\"auto, (max-width: 612px) 100vw, 612px\" \/><\/a>J&rsquo;estime\u00a0ma\u00eetriser\u00a0assez bien Apache ou NginX, et je m&rsquo;\u00e9tonne \u00e9videmment de telles diff\u00e9rences de performances. J&rsquo;ai donc d\u00e9cid\u00e9 d&rsquo;enqu\u00eater !<!--more--><\/p>\n<p>On commence par un rapide tour du logiciel : celui-ci peut se t\u00e9l\u00e9charger gratuitement <a href=\"http:\/\/gwan.ch\">sur le site officiel<\/a>, mais surprise, le code source n&rsquo;est pas ouvert ! Vous t\u00e9l\u00e9chargerez donc uniquement un binaire (deux versions : 32 bits et 64 bits). Cela serait normalement un argument de trop pour moi pour de la prod, mais comme je suis l\u00e0 pour enqu\u00eater (et pas pour utiliser ce logiciel en production), je fais confiance et je t\u00e9l\u00e9charge.<\/p>\n<p>Je lance alors un rapide benchmark et je suis effectivement impressionn\u00e9 par la vitesse\u00a0d\u2019ex\u00e9cution\u00a0 que ce soit sur du statique (appeler une image), ou bien plus\u00a0surprenant\u00a0 un script PHP ! Je retrouve \u00e0 peu pr\u00e8s les performances annonc\u00e9es sur le site officiel. Il s&rsquo;agit donc de savoir quelle est la recette miracle. Soit les d\u00e9veloppeurs sont des Dieux, soit il y a baleine sous gravier \ud83d\ude42<\/p>\n<p>En lisant la (faible) documentation de G-Wan, j&rsquo;apprends que PHP est en plus lanc\u00e9 de la pire des fa\u00e7ons : comme un CGI classique. Autant dire que face \u00e0 un Apache bien configur\u00e9 (avec FastCGI par exemple), il n&rsquo;y a normalement pas photo. Et l\u00e0 l&rsquo;outil se permet de faire 50.000 requ\u00eates par seconde, l\u00e0 o\u00f9 Apache et NginX plafonnent \u00e0 5.000 environ (le script est un simple &lsquo;echo \u00ab\u00a0hello world\u00a0\u00bb&lsquo;). Comment ?<\/p>\n<h2>Tests PHP<\/h2>\n<p>Comme c&rsquo;est la partie qui me surprend le plus, je me suis d&rsquo;abord pench\u00e9 sur la partie PHP. J&rsquo;ai donc cr\u00e9\u00e9 un script un tout petit peu plus compliqu\u00e9 :<\/p>\n<pre>&lt;?php\r\n$m = new memcache();\r\n$r = $m-&gt;connect('127.0.0.1');\r\nif (!$r) exit(500);\r\n$z =$r-&gt;increment('counter');\r\nif ($z === false) {\r\n\u00a0 $r-&gt;set('counter', 0);\r\n} \r\nexit(200);<\/pre>\n<p>Le script reste assez lisible : il se connecte \u00e0 Memcache et incr\u00e9mente une variable &lsquo;counter&rsquo; de un. Si elle n&rsquo;existe pas, on la cr\u00e9\u00e9 avec la valeur 0.<\/p>\n<p>Le support de PHP est un peu limit\u00e9 dans G-Wan, mais je vais passer outre :<\/p>\n<ul>\n<li>il faut absolument que le script se termine avec un exit(CODE_HTTP) ou sinon la page met des dizaines de secondes \u00e0 charger (G-Wan doit s\u00fbrement attendre quelque chose qui n&rsquo;arrive pas).<\/li>\n<li>il ne g\u00e8re (pour le moment) les attributs GET <em>que<\/em> dans $argv (\u00e0 vous de reconstruire $_GET). Pour ce point c&rsquo;est \u00ab\u00a0logique\u00a0\u00bb vu que le logiciel utilise php-cli<\/li>\n<li>et donc pour la m\u00eame raison qu&rsquo;au dessus, il ne g\u00e8re pas non plus les cookies (qui sont un header envoy\u00e9 lorsque votre navigateur demande la page).<\/li>\n<\/ul>\n<p>Comme il s&rsquo;agit d&rsquo;un ajout r\u00e9cent nous serons indulgent sur cette partie (l&rsquo;auteur a fait un appel \u00e0 contribution pour am\u00e9liorer le support de PHP).<\/p>\n<p>Mais bref, voil\u00e0 mon script qui fonctionne. Petit benchmark simple : j&rsquo;appelle mon script PHP 50 fois, et je regarde la valeur de &lsquo;counter&rsquo; dans Memcache. Et l\u00e0, GROSSE surprise : le compteur vaut \u00ab\u00a01\u00a0\u00bb. Et pourtant le testeur que j&rsquo;utilise (weighttp) me dit bien que 100% des requ\u00eates ont r\u00e9ussies. Mon petit doigt me dit que G-Wan n&rsquo;a ex\u00e9cut\u00e9 le script qu&rsquo;une seule fois, et s&rsquo;est cru permis de me retourner du cache pour les autres appels &#8230; Pas tr\u00e8s &lsquo;fair&rsquo; tout \u00e7a ! Mais on va v\u00e9rifier nos dires avec ce 2e script :<\/p>\n<pre>&lt;?php\r\necho rand(0,1000).\"\\n\";\r\nexit(200);<\/pre>\n<p>Relativement simple n&rsquo;est-ce pas ? Juste afficher un nombre al\u00e9atoire. Cette fois je fais une simple boucle shell avec wget pour afficher la sortie du script :<\/p>\n<pre>for i in $(seq 1 10); do wget -q -O - 'http:\/\/127.0.0.1:8080\/?test.php' ; done\r\n379\r\n379\r\n379\r\n379\r\n379\r\n379\r\n379\r\n379\r\n379\r\n379<\/pre>\n<p><del>Et le cr\u00e9ateur de G-Wan hurle \u00e0 qui veut l&rsquo;entendre qu&rsquo;il ne fait pas de caching &#8230; A d&rsquo;autres (ou alors j&rsquo;ai pas compris ce qu&rsquo;il disait).<\/del><\/p>\n<p><strong>MAJ 17\/01\/2013 &#8211; Je faisais r\u00e9f\u00e9rence \u00e0 <a href=\"http:\/\/nbonvin.wordpress.com\/2011\/03\/24\/serving-small-static-files-which-server-to-use\/#comment-221\">ce post<\/a> de Pierre mais en relisant j&rsquo;ai mal\u00a0interpr\u00e9t\u00e9\u00a0son propos : Oui GWAN fait du cache (la FAQ le pr\u00e9cisait bien), mais d&rsquo;apr\u00e8s lui cela ne doit pas expliquer seul les diff\u00e9rences de performances.<\/strong><\/p>\n<p>D&rsquo;apr\u00e8s mes tests, cette mise en cache dure <del>une seconde<\/del>\u00a0200ms comme annonc\u00e9 dans la documentation et d\u00e9pend uniquement de l&rsquo;URL appel\u00e9e ! Donc si vous appelez votre script depuis 10 IPs diff\u00e9rentes (et\/ou avec 10 valeurs de cookies diff\u00e9rentes), vous aurez le m\u00eame cache renvoy\u00e9. Imaginez la catastrophe sur un site E-Commerce. L&rsquo;impl\u00e9mentation de PHP dans G-Wan est certes incompl\u00e8te, mais dans ce cas ne venez pas me voir avec un benchmark qui compare deux choses tr\u00e8s diff\u00e9rentes.<\/p>\n<h2>Tests sur les fichiers statiques<\/h2>\n<p>Les performances pour servir des statiques sont \u00e9galement excellentes. J&rsquo;ai voulu v\u00e9rifier si l\u00e0 aussi il y avait un cache. Ma m\u00e9thode simple : un premier shell \u00e9crit r\u00e9guli\u00e8rement dans un fichier:<\/p>\n<pre>while sleep 0.01; do echo $RANDOM &gt; test.html ; done<\/pre>\n<p>Et dans l&rsquo;autre shell, je r\u00e9cup\u00e8re ce fichier 10 fois de suite :<\/p>\n<pre>for i in $(seq 1 10); do wget -q -O - 'http:\/\/127.0.0.1:8080\/test.html' ; done\r\n29252\r\n29252\r\n29252\r\n29252\r\n29252\r\n29252\r\n29252\r\n29252\r\n29252\r\n29252<\/pre>\n<p>Bingo, l\u00e0 encore, du cache ! Et aucune variation \u00e9galement sur la valeur du cookie, l&rsquo;IP du visiteur, etc. Donc effectivement, si le serveur n&rsquo;a plus besoin d&rsquo;aller relire le fichier \u00e0 chaque fois, les performances seront forc\u00e9ment meilleures \ud83d\ude09<br \/>\nAu passage, les headers renvoy\u00e9s par le serveur sont curieux :<\/p>\n<pre>$ wget --server-response -O - http:\/\/127.0.0.1:8080\/test.html\r\n[...]\r\nLast-Modified: Thu, 01 Jan 1970 00:06:16 GMT\r\n[...]\r\n\r\n$ stat 0.0.0.0_8080\/#0.0.0.0\/www\/test.html\r\n[...]\r\nAccess: 2013-01-17 14:21:21.824193231 +0100\r\nModify: 2013-01-12 14:23:38.376769655 +0100\r\nChange: 2013-01-12 14:23:38.376769655 +0100<\/pre>\n<p>Alors qu&rsquo;on attend plut\u00f4t la date effective de modification de ce fichier statique. Probablement un bug ?<\/p>\n<p>&nbsp;<\/p>\n<h2>Conclusion (partielle)<\/h2>\n<p>Jusque l\u00e0, j&rsquo;ai juste montr\u00e9 que comparer les performances de base de G-Wan, en statique ou avec du PHP n&rsquo;\u00e9tait pas fair play car ce logiciel est fortement bas\u00e9 sur du cache. Maintenant, imaginez que ce comportement vous aille (on peut honn\u00eatement se demander si on a vraiment besoin d&rsquo;aller relire un fichier plat \u00e0 chaque fois). Les performances de G-Wan restent tr\u00e8s \u00e9lev\u00e9es quand m\u00eame ! Par contre pour du PHP, oubliez tout de suite vu l&rsquo;impl\u00e9mentation actuelle ! Si on pouvait choisir sur quels arguments baser le cache (par exemple IP+headers) pourquoi pas, mais l\u00e0 c&rsquo;est juste inutilisable. On attendra donc une impl\u00e9mentation plus compl\u00e8te de cette partie. Et nulle part dans la documentation je n&rsquo;ai trouv\u00e9 comment d\u00e9sactiver ce cache ou changer les arguments (pas juste URL).<br \/>\nDans un prochain article, je partirais donc du postulat qu&rsquo;une seconde de cache me convient, et je regarderai alors les performances et essayerai de les expliquer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a quelques jours, j&rsquo;ai d\u00e9couvert G-WAN, un nouveau serveur web \u00ab\u00a0r\u00e9volutionnaire\u00a0\u00bb d&rsquo;apr\u00e8s son auteur. Ce dernier annonce des performances assez hallucinantes, m\u00eame face \u00e0 Apache, NginX ou Lighttpd qui sont les serveurs web les plus connus. Ce qui m&rsquo;a vraiment \u00e9tonn\u00e9, c&rsquo;est la diff\u00e9rence de performance annonc\u00e9e : J&rsquo;estime\u00a0ma\u00eetriser\u00a0assez bien Apache ou NginX, &hellip; <a href=\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Tests approfondis de G-WAN<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[54,56,55,29],"class_list":["post-88","post","type-post","status-publish","format-standard","hentry","category-informatique","tag-apache","tag-g-wan","tag-nginx","tag-php"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tests approfondis de G-WAN - My thoughts<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tests approfondis de G-WAN - My thoughts\" \/>\n<meta property=\"og:description\" content=\"Il y a quelques jours, j&rsquo;ai d\u00e9couvert G-WAN, un nouveau serveur web \u00ab\u00a0r\u00e9volutionnaire\u00a0\u00bb d&rsquo;apr\u00e8s son auteur. Ce dernier annonce des performances assez hallucinantes, m\u00eame face \u00e0 Apache, NginX ou Lighttpd qui sont les serveurs web les plus connus. Ce qui m&rsquo;a vraiment \u00e9tonn\u00e9, c&rsquo;est la diff\u00e9rence de performance annonc\u00e9e : J&rsquo;estime\u00a0ma\u00eetriser\u00a0assez bien Apache ou NginX, &hellip; Continuer la lecture de Tests approfondis de G-WAN &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/\" \/>\n<meta property=\"og:site_name\" content=\"My thoughts\" \/>\n<meta property=\"article:published_time\" content=\"2013-01-12T12:33:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-17T13:40:31+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png\" \/>\n<meta name=\"author\" content=\"Olivier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@odoucet\" \/>\n<meta name=\"twitter:site\" content=\"@odoucet\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/\",\"url\":\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/\",\"name\":\"Tests approfondis de G-WAN - My thoughts\",\"isPartOf\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png\",\"datePublished\":\"2013-01-12T12:33:06+00:00\",\"dateModified\":\"2013-01-17T13:40:31+00:00\",\"author\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#primaryimage\",\"url\":\"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png\",\"contentUrl\":\"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.olivierdoucet.info\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tests approfondis de G-WAN\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#website\",\"url\":\"https:\/\/www.olivierdoucet.info\/blog\/\",\"name\":\"My thoughts\",\"description\":\"En fran\u00e7ais and in english :)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.olivierdoucet.info\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39\",\"name\":\"Olivier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g\",\"caption\":\"Olivier\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tests approfondis de G-WAN - My thoughts","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/","og_locale":"fr_FR","og_type":"article","og_title":"Tests approfondis de G-WAN - My thoughts","og_description":"Il y a quelques jours, j&rsquo;ai d\u00e9couvert G-WAN, un nouveau serveur web \u00ab\u00a0r\u00e9volutionnaire\u00a0\u00bb d&rsquo;apr\u00e8s son auteur. Ce dernier annonce des performances assez hallucinantes, m\u00eame face \u00e0 Apache, NginX ou Lighttpd qui sont les serveurs web les plus connus. Ce qui m&rsquo;a vraiment \u00e9tonn\u00e9, c&rsquo;est la diff\u00e9rence de performance annonc\u00e9e : J&rsquo;estime\u00a0ma\u00eetriser\u00a0assez bien Apache ou NginX, &hellip; Continuer la lecture de Tests approfondis de G-WAN &rarr;","og_url":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/","og_site_name":"My thoughts","article_published_time":"2013-01-12T12:33:06+00:00","article_modified_time":"2013-01-17T13:40:31+00:00","og_image":[{"url":"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png","type":"","width":"","height":""}],"author":"Olivier","twitter_card":"summary_large_image","twitter_creator":"@odoucet","twitter_site":"@odoucet","twitter_misc":{"\u00c9crit par":"Olivier","Dur\u00e9e de lecture estim\u00e9e":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/","url":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/","name":"Tests approfondis de G-WAN - My thoughts","isPartOf":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#primaryimage"},"image":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#primaryimage"},"thumbnailUrl":"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png","datePublished":"2013-01-12T12:33:06+00:00","dateModified":"2013-01-17T13:40:31+00:00","author":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39"},"breadcrumb":{"@id":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#primaryimage","url":"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png","contentUrl":"http:\/\/www.olivierdoucet.info\/blog\/wp-content\/uploads\/2013\/01\/local_nginx_lighty_gwan_100k.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.olivierdoucet.info\/blog\/2013\/01\/12\/tests-approfondis-de-g-wan\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.olivierdoucet.info\/blog\/"},{"@type":"ListItem","position":2,"name":"Tests approfondis de G-WAN"}]},{"@type":"WebSite","@id":"https:\/\/www.olivierdoucet.info\/blog\/#website","url":"https:\/\/www.olivierdoucet.info\/blog\/","name":"My thoughts","description":"En fran\u00e7ais and in english :)","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.olivierdoucet.info\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/d093cada9eddc4839cbae3de5c823a39","name":"Olivier","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.olivierdoucet.info\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e75f77ace92ccb2dfab09f226ce3d329?s=96&d=mm&r=g","caption":"Olivier"}}]}},"_links":{"self":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":12,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions"}],"predecessor-version":[{"id":119,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions\/119"}],"wp:attachment":[{"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/media?parent=88"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/categories?post=88"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.olivierdoucet.info\/blog\/wp-json\/wp\/v2\/tags?post=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}