<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Performance web &#187; firefox</title>
	<atom:link href="http://performance.survol.fr/avec/firefox/feed/" rel="self" type="application/rss+xml" />
	<link>http://performance.survol.fr</link>
	<description>Quelques mots pour des sites web rapides</description>
	<lastBuildDate>Fri, 18 Jun 2010 12:47:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Priorisation des onglets sur Firefox</title>
		<link>http://performance.survol.fr/2009/11/prioritisation-des-onglets-sur-firefox/</link>
		<comments>http://performance.survol.fr/2009/11/prioritisation-des-onglets-sur-firefox/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 10:00:42 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[onglet]]></category>
		<category><![CDATA[Paul O’Shannessy]]></category>
		<category><![CDATA[priorisation]]></category>
		<category><![CDATA[ressenti]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=755</guid>
		<description><![CDATA[Je ne donne pas de nouvelles mais je suis toujours de près toutes les actualités liées à la performance. En ce moment il y a peu d&#8217;articles techniques qui font de réelles avancées. L&#8217;innovation vient plutôt du navigateur, et Mozilla &#8230; <a href="http://performance.survol.fr/2009/11/prioritisation-des-onglets-sur-firefox/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Je ne donne pas de nouvelles mais je suis toujours de près toutes les actualités liées à la performance. En ce moment il y a peu d&#8217;articles techniques qui font de réelles avancées. L&#8217;innovation vient plutôt du navigateur, et Mozilla fait un sacré travail.</p>
<p>Il y a une dizaine de jours j&#8217;ai vu l&#8217;annonce d&#8217;une fonctionnalité qui me semble couler de source. J&#8217;avais longtemps pensé que c&#8217;était le cas sur tous les navigateurs, et mêmes sur tous les systèmes d&#8217;exploitation : donner plus de ressources à l&#8217;onglet ou à l&#8217;application en cours d&#8217;utilisation. Cela semble logique mais ce n&#8217;était pas encore le cas.</p>
<p>Jusqu&#8217;alors le navigateur gère ses files de téléchargement, premier entré premier sorti, ou presque. Ceux qui ont comme moi l&#8217;habitude d&#8217;ouvrir des dizaines d&#8217;onglets en parallèle connaissent bien le problème. Assez vite le navigateur devient inutilisable car trop de pages sont en chargement. La navigation principale s&#8217;en ressent, quand elle n&#8217;est pas totalement bloquée.</p>
<p>La solution ? Paul O’Shannessy nous propose une <a href="http://zpao.com/articles/24-per_tab_network_prioritization_update">priorisation des onglets et des requêtes réseaux</a> qui en découlent. C&#8217;est génial. Ça ne coute rien, ça ne demande pas une amélioration des performances du navigateur réseau, ça n&#8217;a quasiment aucun effet négatif, mais c&#8217;est une avancée réelle pour l&#8217;utilisateur, comme je les aime.<span id="more-755"></span></p>
<p>Il est tout à fait possible qu&#8217;on voit ça arriver dès Firefox 3.6, rapidement donc. Ça me rappelle <a href="http://performance.survol.fr/2009/08/performance-ressentie-avec-mozilla/">leurs précédents travaux</a> sur la <a href="http://performance.survol.fr/avec/ressenti/">performance ressentie</a>. C&#8217;est comme ça qu&#8217;on fait avancer le web, merci Mozilla.</p>
<p>Paul nous donne <a href="http://zpao.com/articles/22-per_tab_network_prioritization">quelques détails</a> dans un précédent article. Il s&#8217;agit de prioriser l&#8217;onglet en cours, puis les onglets en tâche de fond sur la fenêtre en cours ou les onglets en cours sur les fenêtres en tâche de fond, le reste (onglets en tâche de fond sur une fenêtre en tâche de fond) et enfin toutes les fenêtres minimisées.</p>
<p>Pour ceux que ça intéresse <a href="https://addons.mozilla.org/en-US/firefox/addon/14138/">une extension</a> est disponible pour tester ça sans attendre l&#8217;intégration dans le tronc commun de Firefox.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/11/prioritisation-des-onglets-sur-firefox/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>DNS Prefetch</title>
		<link>http://performance.survol.fr/2009/06/dns-prefetch/</link>
		<comments>http://performance.survol.fr/2009/06/dns-prefetch/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 10:00:46 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[domaine]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[latence]]></category>
		<category><![CDATA[préchargement]]></category>
		<category><![CDATA[prefetch]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=573</guid>
		<description><![CDATA[J&#8217;adore le principe du préchargement. Il s&#8217;agit tout simplement de charger par avance les informations dont on pense avoir besoin plus tard pour pouvoir les utiliser instantanément à ce moment là. Quand plus rien ne fonctionne, le préchargement peut encore améliorer &#8230; <a href="http://performance.survol.fr/2009/06/dns-prefetch/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;adore le principe du préchargement. Il s&#8217;agit tout simplement de charger par avance les informations dont on pense avoir besoin plus tard pour pouvoir les utiliser instantanément à ce moment là. Quand plus rien ne fonctionne, le préchargement peut encore améliorer les choses.</p>
<p>Firefox faisait déjà du préchargement, intelligemment, et ça sera probablement spécifié dans HTML 5. J&#8217;en reparlerai plus tard.</p>
<p>Aujourd&#8217;hui c&#8217;est de <a href="http://www.commentcamarche.net/contents/internet/dns.php3">DNS</a> que je souhaite parler. <a href="http://dev.chromium.org/developers/design-documents/dns-prefetching">Chrome</a> et <a href="https://developer.mozilla.org/En/Controlling_DNS_prefetching">Firefox 3.5</a> ont en effet tous deux la bonne idée de précharger les requêtes DNS. Pour les versions plus anciennes de Firefox il existe même <a href="https://addons.mozilla.org/en-US/firefox/addon/8923">une extension</a>. Etonnamment (et malheureusement) ce n&#8217;est pas encore dans les brouillons HTML 5 par contre.<span id="more-573"></span></p>
<h3>Comment ?</h3>
<p>Trois types de préchargement sont identifiés :</p>
<p>Tout d&#8217;abord le navigateur identifie les liens vers toutes les ressources à charger et tente de résoudre le nom de domaine au plus tôt, en parallèle des autres téléchargements afin que cette résolution soit disponible quand il y en a besoin. Je suppose que l&#8217;effet sera ici très restreint car très fréquemment dès qu&#8217;un ressource vers un nouveau domaine est identifiée alors le téléchargement est immédiatement lancé. Les seules effets que je vois c&#8217;est si vous épuisez la totalité des fils de téléchargements du navigateur, ou si une ressource bloque les files de téléchargement (par exemple un <a href="http://performance.survol.fr/2008/08/javascript-non-bloquant/">javascript bloquant</a>). Le premier cas ne doit quasiment jamais arriver, sur Firefox il faudrait 30 téléchargements simultanés répartis équitablement sur 5 domaines différents, sur Chrome c&#8217;est plus de 60 répartis équitablement sur plus de 10 domaines. Le second cas arrive de moins en moins (<a href="http://www.stevesouders.com/ua/">chrome 2 et Firefox 3.5 ne bloquent plus les téléchargements sur les javascript</a>).</p>
<p>Le second type de préchargement c&#8217;est analyser tous les liens sur lesquels l&#8217;utilisateur peut cliquer, pour résoudre par avance le nom de domaine. Il y aura un gain réel dès que vous utilisez un lien entre deux sites distincts, c&#8217;est à dire très fréquemment quand même.. L&#8217;effet est réduit (on ne gagne que le temps de la résolution DNS) mais il vous fera effectivement gagner du temps.</p>
<p>Le troisième type de préchargement est déclaratif. Le navigateur repère les liens de type<code> &lt;link rel="dns-prefetch" href="//example.org"&gt;</code> et précharge la résolution DNS. Charge à l&#8217;auteur de faire les déclarations pertinentes en sachant ce qu&#8217;il précharge et pourquoi.</p>
<p>Chrome a en fait un quatrième type de préchargement DNS. Il retient à chaque fois les dix domaines résolus au précédent démarage, et les précharge pour vous immédiatement. Vos deux ou trois premiers clics à l&#8217;ouverture du navigateur seront donc magiquement accélérés. C&#8217;est peut être aussi ça qui donne l&#8217;impression de performance ressentis par certains. Mieux, il précharge les sites proposés dans l&#8217;autocomplétion de la barre d&#8217;adresse et de recherche. Le temps que vous preniez votre décision, l&#8217;option a déjà été préchargée et la page s&#8217;affichera d&#8217;autant plus rapidement. Là si l&#8217;effet lui même n&#8217;est pas plus important que les précédents, le ressenti utilisateur est clairement grandement amélioré, on donne une impression de continuité et de réactivité dans tout le navigateur, ce qui est exactement le ressenti exprimé par les utilisateurs de Chrome.</p>
<h3>Pour quoi ?</h3>
<p>Une résolution DNS c&#8217;est couramment entre 30 et 200 ms. Sur des sites américains, c&#8217;est assez souvent plus de 100 ms. Ces mécanismes de préchargement peuvent faire gagner la résolution DNS initiale, et donc la latence de la première requête, la plus importante. Pouvoir avancer dans le temps une ou deux résolutions DNS dans la page peut aussi améliorer les choses, mais je crains que là l&#8217;effet soit plus restreint. Dans l&#8217;ensemble c&#8217;est jusqu&#8217;à 150 ms qu&#8217;on peut gagner. Ce n&#8217;est pas grand chose mais <a href="http://performance.survol.fr/2008/06/a-quoi-ca-sert/">ça reste quand même significatif</a>.</p>
<p>Pour d&#8217;autres pays le résultat peut être encore plus important. Ainsi Google a <a href="http://blog.chromium.org/2008/09/dns-prefetching-or-pre-resolving.html">ses propres statistiques</a> récoltées avec Chrome où on voit que <a href="http://2.bp.blogspot.com/_LJuAPqyUVas/SNE-y5DnY9I/AAAAAAAAAA0/L0oFIrUIkxw/s1600-h/histogram.PNG">la moitié de des requêtes DNS des utilisateurs test se font en plus de 100 ms</a>. Là où ça devient vraiment inacceptable c&#8217;est de voir que la moyenne est de 217 ms et qu&#8217;il y a encore pas loin de 10 % des requêtes qui dépassent la demi seconde. Même si ça arrive rarement, pouvoir gagner cette demi seconde est une victoire incontestable pour le confort utilisateur.</p>
<h3>Vie privée et désactivation</h3>
<p>Les petits malins auront remarqué qu&#8217;avec ce principe, en installant un mouchard dans son serveur DNS et en générant un nom de domaine unique différent à chaque utilisateur on peut traquer l&#8217;utilisateur. L&#8217;intérêt par rapport à une bête balise image est cependant assez faible. On peut déjà faire la même chose, mais en plus simple.</p>
<p>Si toutefois la chose vous gêne, vous pouvez le désactiver dans vos préférences Firefox (cherchez <code>network.dns.disablePrefetch</code>), ou ajouter une balise meta sur vos pages : <code>&lt;meta http-equiv="x-dns-prefetch-control" content="off"&gt;</code>. Mais pourquoi voudriez-vous diminuer l&#8217;expérience utilisateur de toutes façons ?</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/06/dns-prefetch/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Mesurer la performance avec Jiffy</title>
		<link>http://performance.survol.fr/2009/03/mesurer-la-performance-avec-jiffy/</link>
		<comments>http://performance.survol.fr/2009/03/mesurer-la-performance-avec-jiffy/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 11:00:27 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Bill Scott]]></category>
		<category><![CDATA[conférence]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[jiffy]]></category>
		<category><![CDATA[mesure]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[outils]]></category>
		<category><![CDATA[statistiques]]></category>
		<category><![CDATA[velocity]]></category>
		<category><![CDATA[vidéo]]></category>
		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=431</guid>
		<description><![CDATA[Jiffy est un projet mené par Netflix et présenté aux conférences Velocity 2008 (en ligne, pdf, vidéo) par Bill Scoot (tiens, encore un ancien Yahoo!). Personne n&#8217;a l&#8217;air d&#8217;en avoir parlé depuis mais le projet est suffisamment intéressant pour mériter &#8230; <a href="http://performance.survol.fr/2009/03/mesurer-la-performance-avec-jiffy/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/jiffy-web/ ">Jiffy est un projet mené par Netflix</a> et <a href="http://en.oreilly.com/velocity2008/public/schedule/detail/3632">présenté</a> aux c<a href="http://performance.survol.fr/avec/velocity/">onférences Velocity 2008</a> (<a href="http://looksgoodworkswell.blogspot.com/2008/06/velocity-conference-improving-netflix.html">en ligne</a>, <a href="http://assets.en.oreilly.com/1/event/7/Improving%20Netflix%20Performance%20Presentation.pdf">pdf</a>, <a href="http://blip.tv/file/1018527">vidéo</a>) par Bill Scoot (tiens, encore un ancien Yahoo!). Personne n&#8217;a l&#8217;air d&#8217;en avoir parlé depuis mais le projet est suffisamment intéressant pour mériter de s&#8217;y arrêter.<span id="more-431"></span></p>
<p>Le besoin est commun à celui de la plupart des sites important : avoir des statistiques et des mesures réelles venant des utilisateurs. Pour les performances la question est loin d&#8217;être évidentes et la plupart des outils dégradent les performances qu&#8217;ils sont en train de mesurer.</p>
<h3>Mesurer</h3>
<p>Dans sa présentation Bill Scott nous propose un tout petit script js, moins de 10ko. Il offre deux fonctionnalités de base : <code lang="en">mark()</code> et <code lang="en">measure()</code>. La première fonction prend un repère dans le temps, et la seconde mesure le temps passé depuis un repère donné. On peut donc avoir plusieurs mesures par repère, et tout est stocké dans le DOM pour réutilisation plus tard.</p>
<p>Bien entendu on voudra faire une marque à l&#8217;exécution du script, tout en haut du <code lang="en">&lt;head&gt;</code>. On voudra faire une mesure à la fin du <code lang="en">&lt;body&gt;</code>, sur le <span lang="en">DOMContentLoaded</span> et sur le <span lang="en">onLoad</span>. Probablement, puisque la publicité est souvent le plus gros problème de performance, on voudra faire une marque avant d&#8217;insérer la publicité et faire une mesure juste après. Faire une mesure après le contenu principal pourrait aussi être intéressant, de façon à mesurer la partie &laquo;&nbsp;importante pour l&#8217;utilisateur&nbsp;&raquo; quitte à ce que je reste mette plus longtemps à charger.</p>
<p>La seule chose qu&#8217;on ne mesure pas c&#8217;est le premier aller-retour serveur pour aller chercher la page HTML, et le second pour aller chercher le script Jiffy. Maintenant il ne s&#8217;agit pas d&#8217;avoir des mesures absolues, qui ne veulent rien dire en soi. Il y aura un décalage par rapport à Yslow mais on pourra avoir d&#8217;autres mesures, plus précises, et surtout on pourra mesurer les variations suivant les modifications de la page. C&#8217;est finalement ça l&#8217;important : pouvoir améliorer les choses, peu importe où on se situe.</p>
<h3>Collecter</h3>
<p>La seconde partie de Jiffy c&#8217;est l&#8217;envoi des résultats. Le but de Netflix est en effet la collecte statistiques. Il s&#8217;agit donc d&#8217;envoyer toutes les mesures faites avec tout ce qu&#8217;on peut collecter d&#8217;intéressant (version du navigateur, adresse ip, système, identifiant des publicités affichées, page visitée, etc.).</p>
<p>On nous propose d&#8217;envoyer les résultats à chaque mesure ou d&#8217;envoyer une requête groupée en fin de page. Le tout étant reçu par le serveur web pour alimenter une grosse base de données. Envoyer un résultat à chaque mesure risque de dégrader les performances, d&#8217;un autre côté envoyer les résultats en fin de page implique un biais si certains de vos utilisateurs quittent la page avant. Il doit aussi y avoir moyen de stocker ça en cookie pour le recevoir à la requête suivante mais cela implique d&#8217;autres biais.</p>
<p>Avec toutes les mesures, des filtres par navigateur, date, url, publicité &#8230; on pourra enfin détecter la source des problèmes. Lors des évolutions du site, on aura des mesures réelles sur la réaction des différents navigateurs. Mais on pourra être alerté si la courbe de performance pour une URL, un navigateur, une source géographique ou une publicité se dégrade ou s&#8217;améliore. Une publicité ou un partenaire ne respecte pas son SLA à cause des javascript qui appellent des javascript qui appellent des javascript ? on le verra.</p>
<h3>Afficher</h3>
<p>Avec tout ça, nous avons même droit à <a href="http://looksgoodworkswell.blogspot.com/2008/06/announcing-jiffy-firebug-extension-for.html">une extension</a> firefox qui se branche sur firebug et qui permet de visualiser les statistiques de la page courante.</p>
<p><a href="http://performance.survol.fr/wp-content/uploads/2009/03/jiffy-duration.png"><img class="aligncenter size-medium wp-image-433" title="jiffy-duration" src="http://performance.survol.fr/wp-content/uploads/2009/03/jiffy-duration-300x108.png" alt="jiffy-duration" width="300" height="108" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/03/mesurer-la-performance-avec-jiffy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Aperçu de Yslow 2.0</title>
		<link>http://performance.survol.fr/2009/01/apercu-de-yslow-20/</link>
		<comments>http://performance.survol.fr/2009/01/apercu-de-yslow-20/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 11:00:15 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[etag]]></category>
		<category><![CDATA[eval]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[outils]]></category>
		<category><![CDATA[Stoyan Stefanov]]></category>
		<category><![CDATA[yahoo!]]></category>
		<category><![CDATA[Yahoo! Exceptional Performance]]></category>
		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=368</guid>
		<description><![CDATA[J&#8217;avais déjà présenté Yslow, et de toutes façons tous ceux qui lisent ce blog doivent maintenant connaître cet outil indispensable. Stoyan Stefanov, de l&#8217;équipe performande de Yahoo!, a fait en chine la première présentation sur ce qui arrive avec la &#8230; <a href="http://performance.survol.fr/2009/01/apercu-de-yslow-20/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;avais déjà <a href="http://performance.survol.fr/2008/07/les-outils-yslow/">présenté Yslow</a>, et de toutes façons tous ceux qui lisent ce blog doivent maintenant connaître cet outil indispensable. <a href="http://performance.survol.fr/avec/stoyan-stefanov/">Stoyan Stefanov</a>, de l&#8217;équipe performande de Yahoo!, a fait en chine la <a href="http://www.slideshare.net/stoyan/yslow-20-presentation/">première présentation sur ce qui arrive avec la version 2.0 de Yslow</a>. Pour tout vous dire j&#8217;avais le secret espoir que l&#8217;annonce de Yslow 2.0 soit faite à <a href="http://performance.survol.fr/2008/09/paris-web-2008/">Paris Web 2008</a> lors de l&#8217;intervention que j&#8217;ai partagée avec <a href="http://performance.survol.fr/avec/nicole-sullivan/">Nicole Sullivan</a>, mais la finalisation a visiblement demandé du temps.<span id="more-368"></span></p>
<h3>Une mise à jour attendue &#8230;</h3>
<p>J&#8217;avais, comme tout le monde, deux principaux reproches à faire sur l&#8217;outil. Tout d&#8217;abord il ne vérifie qu&#8217;une liste très spécifiques de critères. Ce sont une partie des 14 premiers <a href="http://developer.yahoo.com/performance/rules.html">critères retenus par l&#8217;équipe performance de Yahoo!</a> mais depuis d&#8217;autres recommandations ont pu être dégagée. Il était nécessaire que l&#8217;outil s&#8217;étoffe.</p>
<p>C&#8217;est donc 10 règles supplémentaires qui sont intégrées dans l&#8217;outil, pour un total de 23. Mais là où Yslow aurait pu avoir une simple mise à jour, l&#8217;équipe Yahoo! a permis l&#8217;arrivée d&#8217;un modèle communautaire, où chacun peut ajouter facilement ses propres critères. C&#8217;est l&#8217;histoire de quelques lignes de javascript dans une extension Firefox.</p>
<p>Le second point contestable était le système de notation. Toutes les règles ne sont pas adaptables à tout le monde, avec la même importance. Le premier exemple c&#8217;est <a href="http://performance.survol.fr/2008/06/desactiver-les-etags/">la question des ETags</a> qui pénalise des notations pour rien, soit parce que l&#8217;ETag n&#8217;est pas généré avec le système par défaut d&#8217;Apache, soit parce qu&#8217;il n&#8217;y a qu&#8217;un seul serveur web derrière le site. Chacun a ses spécificités et je retiens encore l&#8217;exemple qu&#8217;on m&#8217;a donné des sites chinois qui ont tendance à avoir des pages web longues de plusieurs dizaines d&#8217;écran parce les usages locaux font qu&#8217;on télécharge la page pour une lecture hors ligne, et qu&#8217;on espère donc en avoir le plus possible dedans quitte à attendre longtemps.</p>
<p>Bref, là aussi Yslow est personnalisable et il sera possible de définir vos propres algorithmes de notation, voire de choisir le type de notation souhaité parmi une liste. À vous de définir vos limites, vos paliers, vos pénalités et les règles qui sont pertinentes à votre site &#8230; ou plutôt à choisir un algorithme créé par quelqu&#8217;un d&#8217;autre et adapté à votre cas. L&#8217;idée est de non seulement pouvoir modifier ces préférences via une interface mais aussi de pouvoir les exporter automatiquement pour les diffuser à d&#8217;autres.</p>
<h3>&#8230; et efficace &#8230;</h3>
<p>Bref, c&#8217;est une très bonne nouvelle, qui va permettre de voir fleurir des personnalisations de Yslow propre à certains types de sites, aux recommandations internes de votre société, ou simplement adaptées à votre échelle. Je m&#8217;abstiens de recopier les images ou le code, vous trouverez tout ça dans <a href="http://www.slideshare.net/stoyan/yslow-20-presentation/">la présentation de Stoyan</a>.</p>
<p>Mais on trouve encore d&#8217;autres petits outils. Parmi eux des menus pour réindenter le code javascript et faire un passage par <a href="http://www.jslint.com/">JSLint</a>. Là encore, quelques lignes de javascript sont prévues pour rajouter vos propres outils.</p>
<p>Mieux, et ça c&#8217;est excellent, il est prévu de sauvegarder votre session de résultat pour une étude plus tard et d&#8217;importer de sessions crées par <a href="http://www.fiddlertool.com/fiddler/">Fiddler</a> ou <a href="http://www.httpwatch.com/">HttpWatch</a>.</p>
<h3>&#8230; mais imparfaite</h3>
<p>Mais tout n&#8217;est pas parfait. Dans les recommandations on trouve la <a href="http://developer.yahoo.com/performance/rules.html#cacheajax">#14 (Make Ajax cacheable)</a>. Difficile à dire pour un outil automatisé s&#8217;il est normal que tel ou tel appel Ajax soit en cache ou dynamique. Je suis dubitatif sur l&#8217;idée d&#8217;avoir automatisé cette règle là. Même chose pour la <a href="http://developer.yahoo.com/performance/rules.html#under25">#33 (Components under 25k)</a>. <a href="http://performance.survol.fr/2008/05/limitations-du-cache-webkit/">La limite de 25k</a> est celle de l&#8217;Iphone, mais on a vu que <a href="http://performance.survol.fr/2008/12/encore-sur-le-cache-de-liphone/">les nouveaux firmware Iphone et Ipod Touch permettent de dépasser allègrement cette limite</a>. Bref, on l&#8217;ajoute dans Yslow quand il serait presque venu le temps de la retirer de la liste globale des recommandations.</p>
<p>Il y en a d&#8217;autres que j&#8217;aurai aimé voir, mais qui doivent être bien plus complexes à automatiser. Par exemple :</p>
<ul>
<li>trop de présentation en HTML au lieu de CSS</li>
<li>code javascript lent</li>
<li>présence de eval() en javascript</li>
<li><a href="http://performance.survol.fr/avec/selecteur/">sélecteurs CSS vraiment mal fait</a></li>
<li><a href="http://performance.survol.fr/2008/10/eviter-les-evenements-trop-frequents/">événements DOM mutualisables avec de la délégation</a></li>
<li>processeur excessivement utilisé lors du rendu</li>
<li><a href="http://performance.survol.fr/2008/09/mode-de-rendu-des-tableaux/">tableaux html dynamique trop gros ou imbriqués</a></li>
</ul>
<p>Ah et &#8230; pas de date de sortie ni de version béta publique, pour l&#8217;instant. Reste que ces nouvelles sont bonnes.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/01/apercu-de-yslow-20/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Quel avenir ?</title>
		<link>http://performance.survol.fr/2008/12/quel-avenir/</link>
		<comments>http://performance.survol.fr/2008/12/quel-avenir/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 11:00:34 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[John Resig]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Internet Explorer]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[parallélisation]]></category>
		<category><![CDATA[pipelining]]></category>
		<category><![CDATA[Steve Souders]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=323</guid>
		<description><![CDATA[Vouloir optimiser le code et régler les performances, est-ce un sujet qui sera obsolète bientôt ? La question peut-être posée autrement : n&#8217;est-on pas en train de compenser les défauts des navigateurs dans quelques millions de sites avec des résultats &#8230; <a href="http://performance.survol.fr/2008/12/quel-avenir/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vouloir optimiser le code et régler les performances, est-ce un sujet qui sera obsolète bientôt ?</p>
<p>La question peut-être posée autrement : n&#8217;est-on pas en train de compenser les défauts des navigateurs dans quelques millions de sites avec des résultats discutables au lieu de fixer les quelques navigateurs ?</p>
<h3>Sus au navigateur !</h3>
<p>Ma première réponse habituelle est de dire que si, nous sommes, pour bonne partie, en train de compenser les manques et les défauts de nos navigateurs. C&#8217;est le cas quand on parle d&#8217;agréger les contenus (au lieu d&#8217;utiliser le <a href="http://performance.survol.fr/2008/04/pipelining-enchainer-les-requetes-http/">HTTP pipelining</a>), quand on parle de <a href="http://performance.survol.fr/2008/04/javascript-a-sa-place/">déplacer les javascript en fin de document</a> (au lieu de <a href="http://performance.survol.fr/2008/08/javascript-non-bloquant/">laisser le navigateur les télécharger en parallèle</a>) ou quand on parle de <a href="http://performance.survol.fr/2008/04/limitation-du-nombre-de-requetes/">séparer les contenus statiques sur plusieurs domaines</a> (pour exploiter au mieux la configuration de nos navigateurs).</p>
<h3>Vive le navigateur !</h3>
<p>Heureusement il y a beaucoup d&#8217;activité actuellement chez les éditeurs logiciels. Opera, Apple/Webkit, Mozilla et même Microsoft font des efforts. La génération qui arrive va avoir des navigateurs avec beaucoup moins de goulots d&#8217;étranglement côté performances, et un ressenti de vitesse non atteint jusque là : Les javascript vont enfin pouvoir se télécharger en parallèle et ne plus bloquer le rendu, on ouvre plus de requêtes simultanées par serveur, et on tente quelques optimisations.</p>
<p>C&#8217;est Steve Souders qui nous propose <a href="http://stevesouders.com/ua/">un petit tableau récapitulatif sur les possibilités de cette nouvelle génération de navigateurs</a> (que <a href="http://ejohn.org/blog/browser-page-load-performance">John Resig commente</a>). Tout n&#8217;est pas parfait mais vous noterez intuitivement une bonne dose de vert pour Microsoft Internet Explorer 8, Minefield 3.1 (qui est la version de Firefox en développement), et WebKit 4. Les cases faisant la différence entre ces trois là sont liées aux redirections et au prechargement, ce sont certainement les colonnes les moins importantes de la grille. Opera reste de côté tant qu&#8217;il ne permet pas de paralléliser les scripts, mais il y a tout lieu de penser que cela va s&#8217;arranger.</p>
<h3>Agissons maintenant</h3>
<p>Tout va bien, arrêtons tout parce que ça va être corrigé sur les navigateurs ? Surtout pas ! Tout simplement parce que vos utilisateurs et votre site ne peuvent pas attendre les multiples années nécessaires à ce que le parc des navigateurs soit mis à jour.</p>
<p>Bref, nous n&#8217;avons pas le choix. Le visiteur se moque de savoir que c&#8217;est la faute du navigateur, qu&#8217;un plus récent est en préparation, ou même qu&#8217;un plus récent est disponible en téléchargement. Lui voit que votre site est lent, agaçant, et peut être qu&#8217;en allant chez le concurrent ça sera mieux &#8211; à navigateur égal.</p>
<p>En attendant que toutes les versions actuelles des navigateurs soient remplacées, vous devez agir, quitte à agir en pompier pour corriger les défaillances de ces derniers.</p>
<h3>Surtout que c&#8217;est un peu notre faute</h3>
<p>Mais n&#8217;oubliez pas, derrière cette grille il y a encore beaucoup de choses qui sont de la responsabilité de l&#8217;intégrateur web ou de l&#8217;administrateur web. Je parle de cache, d&#8217;agrégation de contenu, de compression http, d&#8217;images en sprites, d&#8217;optimisations javascript, ou simplement d&#8217;ordonnancement des composants.</p>
<p>Ne croyez pas que même avec ces superbes moteurs de navigateur qui arrivent, la performance deviendra un sujet obsolète.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2008/12/quel-avenir/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Performance des sélecteurs CSS, encore un mot</title>
		<link>http://performance.survol.fr/2008/10/performance-des-selecteurs-css-encore-un-mot/</link>
		<comments>http://performance.survol.fr/2008/10/performance-des-selecteurs-css-encore-un-mot/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 10:00:05 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Dave Hyatt]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Jon Sykes]]></category>
		<category><![CDATA[Microsoft Internet Explorer]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[sélecteur]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=252</guid>
		<description><![CDATA[On reparle des performances CSS. Souvenez-vous, je vous avais parlé d&#8217;un document de Mozilla faisant état des sélecteurs plus ou moins performants. S&#8217;était ensuivi une discussion à propos de la pertinence de tels sujets vu la différence de performance mise &#8230; <a href="http://performance.survol.fr/2008/10/performance-des-selecteurs-css-encore-un-mot/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On reparle des performances CSS. Souvenez-vous, <a href="http://performance.survol.fr/2008/05/performance-des-selecteurs-css/">je vous avais parlé d&#8217;un document de Mozilla</a> faisant état des sélecteurs plus ou moins performants. S&#8217;était ensuivi <a href="http://performance.survol.fr/2008/05/gains-de-performance-des-selecteurs-css/">une discussion à propos de la pertinence de tels sujets</a> vu la différence de performance mise en oeuvre.</p>
<p>Je vous invite à relire ce second billet, qui résume assez bien. Si on remet le couvert c&#8217;est que Jon Sykes a refait <a href="http://jon.sykes.me/153/more-css-performance-testing-pt-3">un troisième test</a> tout récemment, avec un graphique assez sympa</p>
<p><span id="more-252"></span></p>
<p>Plutôt que les valeurs absolues des performances ce qui est intéressant c&#8217;est l&#8217;évolution suivant le type de sélecteur utilisé. Safari et Microsoft Internet Explorer sont très dépendant du sélecteur, Firefox un peu moins. Allez voir les graphiques, ça vaut milles lignes d&#8217;explication.</p>
<p>Bref, si vous deviez retenir quelque chose :</p>
<ul>
<li>Faites attention aux sélecteurs enfant et descendant (mais pas au point de tenter de les éviter) ;</li>
<li>Tentez d&#8217;utiliser des sélecteurs très simples, par exemple juste un nom de classe (mais pas la peine de reprendre vos CSS pour ça) ;</li>
<li>N&#8217;ajoutez pas de hiérarchie de balises en préfixe de vos sélecteurs en pensant aider le navigateur (c&#8217;est le contraire qui se passe) ;</li>
<li>L&#8217;impact de tout cela sera  nul sur des pages simples ou même moyennes, cela peut commencer à avoir du sens sur des grosses applications HTML comme on commence à en voir (c&#8217;est Dave Hyatt qui le dit, faites lui confiance) ;</li>
<li>Les navigateurs ne réagissent pas tous pareil vis à vis de la complexité des sélecteur, Firefox semble optimiser ses recherches différemment.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2008/10/performance-des-selecteurs-css-encore-un-mot/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Interpréteur JSON natif pour webkit</title>
		<link>http://performance.survol.fr/2008/07/interpreteur-json-natif-pour-webkit/</link>
		<comments>http://performance.survol.fr/2008/07/interpreteur-json-natif-pour-webkit/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 10:12:59 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Adam Barth]]></category>
		<category><![CDATA[Anthony Ricaud]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=60</guid>
		<description><![CDATA[Je vous en parlais il y a presque deux mois, JSON c&#8217;est lent à interpréter si on le fait bien. C&#8217;est même globalement plus lent que XML parce que le code est en javascript, côté utilisateur, alors que XML est &#8230; <a href="http://performance.survol.fr/2008/07/interpreteur-json-natif-pour-webkit/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Je vous en parlais il y a presque deux mois, <a href="http://performance.survol.fr/2008/04/json/">JSON c&#8217;est lent à interpréter</a> si on le fait bien. C&#8217;est même globalement plus lent que XML parce que le code est en javascript, côté utilisateur, alors que XML est géré nativement par les navigateurs.</p>
<p>La solution c&#8217;est l&#8217;arrivée de moteurs JSON natifs dans les navigateurs. <a href="http://developer.mozilla.org/en/docs/nsIJSON">Mozilla Firefox l&#8217;a prévu</a> (actuellement dans les plans pour la version 3.1). <a href="http://hanblog.info/blog/">Anthony Ricaud</a> m&#8217;a comme a son habitude fait passé des liens WebKit alors voilà : <a href="https://bugs.webkit.org/show_bug.cgi?id=20031">Adam Barth y travaille pour WebKit</a>.</p>
<p>Nul doute qu&#8217;Opera suivra les deux premiers s&#8217;ils implémentent l&#8217;API de la même façon. Il restera Microsoft Internet Explorer, mais pouvoir utiliser l&#8217;API native et basculer sur le chargement d&#8217;une bibliothèque javascript uniquement si elle n&#8217;est pas présente, c&#8217;est déjà un gros pas en avant.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2008/07/interpreteur-json-natif-pour-webkit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lessive et performance</title>
		<link>http://performance.survol.fr/2008/05/lessive-et-performance/</link>
		<comments>http://performance.survol.fr/2008/05/lessive-et-performance/#comments</comments>
		<pubDate>Fri, 30 May 2008 11:49:41 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[squirrelfish]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=35</guid>
		<description><![CDATA[La communication des éditeurs de navigateur ressemble plus en plus à celle des vendeurs de lessive, mais au moins on commence à voir l&#8217;importance des performances. Le navigateur le plus rapide au monde ! On apprend ainsi que Firefox 3 &#8230; <a href="http://performance.survol.fr/2008/05/lessive-et-performance/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>La communication des éditeurs de navigateur ressemble plus en plus à celle des vendeurs de lessive, mais au moins on commence à voir l&#8217;importance des performances.</p>
<h3>Le navigateur le plus rapide au monde !</h3>
<p>On apprend ainsi que Firefox 3 est le navigateur le plus rapide au monde ! En France c&#8217;est bien sûr Tristan Nitot qui <a href="http://standblog.org/blog/post/2008/05/29/How-Firefox-3-performance-boost-makes-a-difference-in-the-real-world">relaie l&#8217;annonce</a> en prenant pour base <a href="http://blogs.zdnet.com/hardware/?page_id=1884">un billet du blog ZDNet qui compare javascript</a>.  </p>
<p>Il s&#8217;agit en fait des résultats d&#8217;un test de performance Javascript. Le test lui même, SunSpider, est publié par Apple via le projet webkit. Firefox 3.0rc1 y arrive effectivement en premier, à peu près à même niveau que Safari 3.1. Globalement les autres navigateurs en développement ou récents sont deux à trois fois plus lents (IE 8, Opera 9.2 &amp; 9.5b, Safari 3.0). Firefox 2 est même quatre à cinq fois plus lent, Internet Explorer 7 est presque dix fois plus lent.<span id="more-30"></span></p>
<h3>Versions de développements</h3>
<p>On fait valoir que le gain de Firefox 2 à Firefox 3 est très important pour les utilisations de tous les jours, mais dans la communication de nombreux sites ce qui transparaît que c&#8217;est parce que Firefox 3 est le plus rapide au monde. On oublie qu&#8217;en fait c&#8217;est Firefox 2 qui est étonnamment lent par rapport à tous les autres (Internet Explorer 7 mis à part).</p>
<p>Pire, de mon point de vue : on met en valeur Firefox 3 en &#8230; faisant la comparaison avec Internet Explorer 7. Firefox 3 est en version de développement, pourquoi ne pas alors être honnête et comparer avec la version de développement d&#8217;Internet Explorer ? la beta 1 est dans le graphique, et si la différence de performance reste importante en valeur absolue, elle n&#8217;a plus du tout le même impact pour l&#8217;utilisateur final. Internet Explorer 8b1 étant tout de même deux fois plus rapide sur ce test que Firefox 2 (et plus rapide que Firefox 3.0b1 si on veut prendre le même niveau d&#8217;évolution)</p>
<p>Du coup je ne peux de plus que m&#8217;étonner de l&#8217;absence des versions de développement Safari. Les versions de développement des autres navigateurs y sont et l&#8217;équipe webkit nous parle en permanence de grandes avancées à propos de Javascript et <a href="http://trac.webkit.org/wiki/SquirrelFish">Squirrelfish</a>. Ah, visiblement sur le même test les versions de développement de Safari avec le nouveau moteur javascript <a href="http://paste.lisp.org/display/61070">SquirrelFish est quatre fois plus efficace que le Safari 3.0</a>, soit presque 2 fois plus rapide que Safari 3.1 et encore 50%  rapide que le navigateur le plus rapide au monde (je parle de Firefox 3.0rc1 si vous me suivez bien).</p>
<h3>Des chiffres triés</h3>
<p>Alors en remettant dans le bon contexte :</p>
<ul>
<li>Dans les navigateurs en version de développement c&#8217;est Safari qui mène la danse, Firefox est derrière (50% plus lent), puis Opera 9.50b2 (3x plus lent) et enfin Internet Explorer 8b1 (4x plus lent).</li>
<li>Dans les navigateurs en version stable, c&#8217;est encore Safari 3.1 qui mène la danse, puis Opera 9.26 (2x plus lent), Firefox 2.0 (4x plus lent) et enfin Internet Explorer 7 (8x plus lent).</li>
</ul>
<p>Firefox navigateur le plus rapide au monde peut laisser le trophée à Safari, en tout cas sur ce test javascript. Le futur Firefox est même à peine plus performant que l&#8217;actuel Safari. On peut aussi voir que tous les navigateurs ont bien amélioré leurs performance, environ d&#8217;un rapport 4. Firefox ne fait donc pas exception. Seul Opera a fait moins d&#8217;avancées, mais à sa décharge il n&#8217;était pas mal placé et reste à des performances honorables.</p>
<p>La seule chose que je remarque dans le graphique ce n&#8217;est pas la performance de Firefox 3, s&#8217;est les extraordinaires contre-performances de Firefox 2 et Internet Explorer 7 (même si ça fait mal de voir les deux associés quand on parle de performance). Et la chose qui me manque dans le graphique c&#8217;est le futur Safari, qui fait une différence extraordinaire avec tous les autres.</p>
<h3>Vendeurs de lessive</h3>
<p>Je ne peux m&#8217;empêcher de regretter ces arguments de vendeurs de lessives. Mon futur navigateur en développement est le plus rapide au monde, à condition de ne pas compter ceux des autres. Ces avancées de performances sont un vrai bonus pour l&#8217;utilisateur, il ne s&#8217;agit pas de ça. Mais la communication est tronquée et de toutes façons peu aidante pour l&#8217;utilisateur.</p>
<p>Certes, Firefox 3 est proche d&#8217;une version finale donc il sera effectivement pendant quelques temps le navigateur le plus rapide au monde, mais je doute que ce soit ça l&#8217;important aux yeux de l&#8217;utilisateur, surtout sachant que les version de développement de Safari font déjà tourner le même code 50% plus vite.</p>
<p>Il fut un temps où le projet Mozilla était présenté comme une démo ou un prototype technologique. Je ne me rappelle plus exactement les termes mais l&#8217;esprit est bien celui là. Depuis l&#8217;arrivée de Firefox on a une communication qui devient &laquo;&nbsp;marketing produit&nbsp;&raquo; et qui ressemble à celle d&#8217;un vendeur de lessive (celle qui lave plus blanc que blanc). C&#8217;est dommage, surtout quand on voit que Safari/webkit, eux, arrive à concilier l&#8217;impératif d&#8217;avoir une communication promotionnelle par Apple/Safari et continue à avoir des publication relativement objectives et honnêtes sur les sujets techniques via webkit.</p>
<h3>Le fond</h3>
<p>Je n&#8217;ai pu m&#8217;empêcher de pousser un petit coup de gueule contre cette dérive marketing mais le fond n&#8217;est pas là. Le fond, l&#8217;important, il se retrouve aussi dans le billet de Tristan Nitot : Ces gains, quel que soit le navigateur, sont des gains très importants pour l&#8217;utilisateur. Là où vous attendiez un résultat, vous ne ferez que percevoir qu&#8217;il y a un délai. Là où vous perceviez un délai non gênant, vous aurez l&#8217;impression d&#8217;instantané. Un facteur 4 ou 5 c&#8217;est la différence entre lent et rapide, entre une application frustrante et une application agréable.</p>
<p>Préparez-vous à de grands changements de ce point de vue. Je regrette juste que les développeurs web et les éditeurs de sites web ne se soient pas encore rendus compte de l&#8217;importance des performances. Il y a en effet encore du boulot à faire du côté des sites eux-même, et pas qu&#8217;un peu.</p>
<p>Pour l&#8217;utilisateur ça peut être une révolution, et les éditeurs de navigateurs, eux, ne s&#8217;y trompent pas. Les performances sont devenus un argument promotionnel important. Malheureusement pour nous ça veut dire qu&#8217;il va falloir vérifier et douter de toutes les communications sur le sujet, qui seront encore moins objectives, honnêtes et exhaustives.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2008/05/lessive-et-performance/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pipelining : enchaîner les requêtes HTTP</title>
		<link>http://performance.survol.fr/2008/04/pipelining-enchainer-les-requetes-http/</link>
		<comments>http://performance.survol.fr/2008/04/pipelining-enchainer-les-requetes-http/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 10:56:18 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[pipelining]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[téléchargement]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=18</guid>
		<description><![CDATA[Le pipelining HTTP c&#8217;est faire gérer au serveur une file de requêtes. Le navigateur envoie plusieurs requêtes à la suite les unes des autres sans attendre la réponse du serveur. Le serveur renvoie alors les réponses dès qu&#8217;il les a, potentiellement &#8230; <a href="http://performance.survol.fr/2008/04/pipelining-enchainer-les-requetes-http/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Le <a href="http://en.wikipedia.org/wiki/HTTP_pipelining">pipelining HTTP</a> c&#8217;est faire <a href="http://www.run.montefiore.ulg.ac.be/~martin/resources/pipelining/pipelining-tutorial.html">gérer au serveur une file de requêtes</a>. Le navigateur envoie plusieurs requêtes à la suite les unes des autres sans attendre la réponse du serveur. Le serveur renvoie alors les réponses dès qu&#8217;il les a, potentiellement en parallèle aux requêtes du navigateur. Non seulement on utilise le principe de la connexion persistante, mais on évite d&#8217;attendre la réponse précédente avant d&#8217;envoyer la suite. Pour chaque ressource à télécharger après la première, c&#8217;est un aller-retour réseau à rien faire qui est évité.<span id="more-16"></span></p>
<h3>Concrêtement</h3>
<p><img class="alignleft size-medium wp-image-17" title="Http pipelining" src="http://performance.survol.fr/wp-content/uploads/2008/04/http_pipelining-300x186.png" alt="" width="300" height="186" />Si on considère que nos douze ressources sont téléchargées par un seul fil d&#8217;exécution (ou que vous avez 24 ressources, donc deux fils à 12), vous épargnez 11 aller-retour. Dans notre exemple c&#8217;est 440 ms qui sont gagnées avec tout ça.</p>
<p>Le seul <a href="http://www.macosxhints.com/article.php?story=20030124065007237">défaut du pipelining</a> est qu&#8217;il faut bien le régler dans le navigateur. Il peut devenir contre-performant dans un seul cas : si le navigateur enchaîne ses requêtes sur une seule connexion alors qu&#8217;il aurait pu les balancer sur plusieurs connexions simultanées. Il faut juste s&#8217;assurer que le navigateur préfère utiliser au maximum ses connexions multiples avant d&#8217;enchaîner les requêtes.</p>
<h3>Le support</h3>
<p>Le pipelining une fonctionnalité prévue par HTTP 1.1 (protocole que maintenant quasiment tous les serveurs web et proxys affirment implémenter). <a href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">L&#8217;activer est un gain important</a> pour le client, avec très peu de contre-coups pour le serveur. </p>
<p>Le problème ne vient alors pas vraiment d&#8217;un équilibre entre les performances clients et les performances serveurs, mais simplement de la capacité du serveur à enchaîner les requêtes. Il semblerait que certains serveurs supportent mal ou pas du tout cette possibilité, et entraînent des résultats incohérents : IIS par exemple.</p>
<p>C&#8217;est en tout cas pour cette raison que Firefox désactive le pipelining par défaut (<a href="http://www.mozilla.org/projects/netlib/http/pipelining-faq.html">mais documente la fonctionnalité</a>). Le fait est que Opera utilise le pipelining depuis longtemps, et que cela n&#8217;a pas l&#8217;air de déranger ses utilisateurs ou de &laquo;&nbsp;casser le web&nbsp;&raquo;. IIS peut être détecté assez facilement et le reste du Web n&#8217;a pas l&#8217;air de poser un problème tel à Opera que cela justifie la désactivation pour Firefox.</p>
<h3>Jouer avec firefox</h3>
<p>Si vous voulez jouer avec Firefox, vous pouvez tout de même activer le pipelining via <code><a href="http://kb.mozillazine.org/Network.http.pipelining">network.http.pipelining</a></code>, <code><a href="http://kb.mozillazine.org/Network.http.proxy.pipelining">network.http.proxy.pipelining</a></code>, et <code><a href="http://kb.mozillazine.org/Network.http.pipelining.maxrequests">network.http.pipelining.maxrequests</a></code>. Les deux premiers sont des booléens, pour activer le pipelining. Le second est un nombre maximum de requêtes à mettre dans la pile, 4 est un bon défaut (Firefox n&#8217;accepte pas une valeur plus grande que 8, et de toutes façons elle n&#8217;aurai aucune utilité). </p>
<p>Bien entendu, le pipelining n&#8217;est disponible que sur HTTP 1.1, et si les connexions persitantes sont activées (dans le navigateur comme sur le serveur).</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2008/04/pipelining-enchainer-les-requetes-http/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
