<?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</title>
	<atom:link href="http://performance.survol.fr/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>Pause</title>
		<link>http://performance.survol.fr/2010/01/pause/</link>
		<comments>http://performance.survol.fr/2010/01/pause/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 10:38:12 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=777</guid>
		<description><![CDATA[J&#8217;ai toujours déclaré que je suivrai le rythme d&#8217;écriture qui me plait, ne me forçant pas à écrire quand je n&#8217;en ai pas envie. Ces derniers mois il y a donc eu peu de billets, traduisant une situation personnelle qui &#8230; <a href="http://performance.survol.fr/2010/01/pause/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai toujours déclaré que je suivrai le rythme d&#8217;écriture qui me plait, ne me forçant pas à écrire quand je n&#8217;en ai pas envie. Ces derniers mois il y a donc eu peu de billets, traduisant une situation personnelle qui occupe suffisamment mon esprit pour que je ne me disperse pas trop.</p>
<p>Il est temps pour moi de faire une pause. Je l&#8217;espère courte, elle sera peut être longue, vous verrez, et moi aussi.</p>
<p>Je reste focalisé sur le sujet, n&#8217;hésitez pas à m&#8217;envoyer des liens, je peux toujours vous proposer audits, formations ou accompagnements professionnels sur ces sujets, avec une expertise de pointe, mais l&#8217;écriture sur mon temps personnel n&#8217;est plus d&#8217;actualité à très court terme.</p>
<p>Bonne continuation et merci à tous ceux qui m&#8217;ont suivi ici. J&#8217;espère vous revoir quand je déciderai de reprendre, que ce soit dans deux semaines ou dans plusieurs mois.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2010/01/pause/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Automatisation de Yslow</title>
		<link>http://performance.survol.fr/2009/12/automatisation-de-yslow/</link>
		<comments>http://performance.survol.fr/2009/12/automatisation-de-yslow/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 11:00:36 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[automatisation]]></category>
		<category><![CDATA[cesium]]></category>
		<category><![CDATA[mesure]]></category>
		<category><![CDATA[mozrepl]]></category>
		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=774</guid>
		<description><![CDATA[La prise de conscience sur le sujet des performances web évolue. Beaucoup d&#8217;équipes ont désormais appliqué quelques recettes de base, ou ont au moins un item dédié dans la liste des choses à faire. Il reste toutefois à passer une &#8230; <a href="http://performance.survol.fr/2009/12/automatisation-de-yslow/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>La prise de conscience sur le sujet des performances web évolue. Beaucoup d&#8217;équipes ont désormais appliqué quelques recettes de base, ou ont au moins un item dédié dans la liste des choses à faire.</p>
<p>Il reste toutefois à passer une phase d&#8217;industrialisation. Lancer Yslow tous les mois à la main n&#8217;est pas toujours idéal. Cela implique de reporter des résultats manuellement et du coup de ne le faire que pour un nombre limité de pages. On se retrouve aussi à devoir trier les métriques pour y associer une priorité et ne pas se retrouver à devoir tout faire immédiatement.</p>
<p>Une approche pragmatique voudrait qu&#8217;on puisse automatiser Yslow et s&#8217;occuper régulièrement des points et des pages les plus prioritaires. C&#8217;est ce que vous propose Yslow :<span id="more-774"></span></p>
<h3>Importer et centraliser les résultats</h3>
<p>Tout ce que vous avez à faire c&#8217;est modifier <a href="http://tech.groups.yahoo.com/group/exceptional-performance/message/494">deux valeurs de configuration</a> dans votre <a href="about:config">about:config</a> : <em>extensions.firebug.yslow.beaconUrl</em> et <em>extensions.firebug.yslow.optinBeacon</em>. La première est l&#8217;adresse d&#8217;un script, et le second est un booléen pour activer la fonctionnalité. Tout ce qui sera mesuré sera alors simplement envoyé à votre script. La suite c&#8217;est éventuellement de régler <em>extensions.yslow.autorun</em> pour que yslow soit lancé automatiquement sur toutes les pages qu&#8217;il rencontre.</p>
<h3>Automatiser la procédure</h3>
<p>Il reste que même si les résultats sont collectés automatiquement et centralisés par la suite, on demande encore à un utilisateur de parcourir le site. La prochaine étape c&#8217;est de faire tourner un Firefox automatiquement. Firefox accepte quelques paramètres en ligne de commande, le reste peut être fait via greasmonkey ou <a href="http://wiki.github.com/bard/mozrepl">mozrepl</a>. Il devient tout à fait acceptable de lancer un site à distance, réaliser quelques actions, et obtenir le résultat yslow dans la base de données.</p>
<h3>Fonctionner sans fenêtre</h3>
<p>On commence à s&#8217;approcher de ce que pourrait faire un serveur de test ou de mesure. Pour aller encore plus loin il faudrait se passer des fenêtres Firefox et faire tourner le logiciel hors de tout contexte graphique. Si vous êtes avec un système linux, rien de plus <a href="http://www.semicomplete.com/blog/geekery/xvfb-firefox.html">simple avec un petit coup de xvfb</a>.</p>
<h3>Au final</h3>
<p>Résultats collectés en base, yslow automatique, pilotage à distance, automatisation, fonctionnement sans fenêtre, au final ça a déjà été fait par d&#8217;autres, mais ça reste encore artisanal. Pour ceux qui veulent tester, jetez un oeil à <a href="https://wiki.mozilla.org/Webdev:Cesium">Cesium</a>. Il s&#8217;agit d&#8217;un projet pour faire justement ça, avec un back-office en python. (retours bienvenus, je n&#8217;ai pas testé Cesium moi même)</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/12/automatisation-de-yslow/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Experience de voici.fr</title>
		<link>http://performance.survol.fr/2009/11/experience-de-voici-fr/</link>
		<comments>http://performance.survol.fr/2009/11/experience-de-voici-fr/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 11:00:12 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[cache-control]]></category>
		<category><![CDATA[Charles-Christian Croix]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[dotclear]]></category>
		<category><![CDATA[ezPublish]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[jpegtran]]></category>
		<category><![CDATA[mod_gzip]]></category>
		<category><![CDATA[pngcrush]]></category>
		<category><![CDATA[Voici.fr]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=763</guid>
		<description><![CDATA[J&#8217;aime bien apporter un peu de retours d&#8217;expérience, pour montrer que toute la théorie fonctionne aussi en pratique. Certes il y a Yahoo!, Google, Amazon, mais ce sont des trop gros sites pour que le développeur moyen se sente impliqué. &#8230; <a href="http://performance.survol.fr/2009/11/experience-de-voici-fr/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>J&#8217;aime bien apporter un peu de retours d&#8217;expérience, pour montrer que toute la théorie fonctionne aussi en pratique. Certes il y a Yahoo!, Google, Amazon, mais ce sont des trop gros sites pour que le développeur moyen se sente impliqué.</p>
<p>Alors voilà, Charles-Christian Croix nous parle un peu de ce qui a été réalisé sur Voici.fr. <a href="http://www.karlesnine.com/post/2009/10/12/Voici.fr-exemple-utilisation-des-caches-web-pour-un-site-eZ-Publish-4.2-optimisation-squid-reverse-proxy-mod_expires-mod_gzip">La première étape</a> se fait via une configuration des entêtes HTTP de cache de ezPublish puis une configuration de mod_gzip sur Apache, et enfin par une configuration de mod_expires, toujours sur Apache. Il fait de même plus tard <a href="http://www.karlesnine.com/post/2009/10/22/DC2">sur une installation Dotclear</a>.<span id="more-763"></span></p>
<p>On peut regretter l&#8217;expiration très courte (une journée) accompagniée d&#8217;un <code>must-revalidate</code>, mais je me permet d&#8217;insister avec intérêt sur le <a href="http://performance.survol.fr/2008/05/prive-ou-public/"><code>Cache-Control: public</code></a> très important dans le cas d&#8217;une application PHP. EzPublish utilise très probablement les sessions PHP, qui ajoutent par défaut un <code>Cache-Control: private</code>. il faut donc le corriger.</p>
<p>Dans un autre billet on voit <a href="http://www.karlesnine.com/post/2009/10/27/Voici.fr-Interet-de-l-optimisation-web-cache-et-des-performance-des-reverses-proxys">le résultat sur le squid</a> de la gestion du cache des images et de la compression HTTP :</p>
<p style="text-align: center;"><a href="http://performance.survol.fr/wp-content/uploads/2009/11/Squid.Conf.Effect.png"><img class="aligncenter size-full wp-image-765" title="Squid.Conf.Effect" src="http://performance.survol.fr/wp-content/uploads/2009/11/Squid.Conf.Effect.png" alt="La charge du proxy inverse diminue drastiquement à partir de juillet" width="597" height="269" /></a></p>
<p>Dans une seconde partie il nous parle de <a href="http://www.karlesnine.com/post/2009/10/23/Optimision-Image-pour-le-web">compression d&#8217;images</a>. Là aussi les solutions sont connues mais c&#8217;est appréciable de voir quelqu&#8217;un le mettre en œuvre et en parler ensuite. Sur les PNG il identifie un gain moyen d&#8217;un tiers pour le poids des images. C&#8217;est plus que conséquent, et ça aura un effet visible et sur le client et sur votre infrastructure. Je me permet juste d&#8217;apporter un bémol sur l&#8217;utilisation du paramètre <code>-brute</code> de pngcrush, qui est loin d&#8217;être le meilleur compromis gain/temps.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/11/experience-de-voici-fr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>Pngrewrite sous linux</title>
		<link>http://performance.survol.fr/2009/09/pngrewrite-sous-linux/</link>
		<comments>http://performance.survol.fr/2009/09/pngrewrite-sous-linux/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 10:00:25 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[pngout]]></category>
		<category><![CDATA[pngrewrite]]></category>
		<category><![CDATA[punypng]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=749</guid>
		<description><![CDATA[Je fais encore le tour des outils de compression d&#8217;image pour faire la comparaison et trouver le bon compromis entre ressources consommées et efficacité. Un de mes problème c&#8217;est punypng qui annonce des performances exceptionnelles mais qui ne détaille pas &#8230; <a href="http://performance.survol.fr/2009/09/pngrewrite-sous-linux/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Je fais encore le tour des outils de compression d&#8217;image pour faire la comparaison et trouver le bon compromis entre ressources consommées et efficacité. Un de mes problème c&#8217;est <a href="http://www.gracepointafterfive.com/punypng">punypng</a> qui annonce des performances exceptionnelles mais qui ne détaille pas son fonctionnement et ne propose même pas d&#8217;API. Je vérifierai leurs affirmations et tenterai de m&#8217;en approcher mais en attendant je fouille.</p>
<p>Un des outils que je regarde c&#8217;est <a href="http://entropymine.com/jason/pngrewrite/">pngrewrite</a>. La rumeur voudrait qu&#8217;il ne gagne pas grand chose mais qu&#8217;il est capable de le faire même après un passage par optipng ou pngcrush. Bref, un petit ajout rapide, juste pour grappiller un peu plus.</p>
<p>Je vais vérifier tout ça là aussi, mais en attendant le code proposé sur le site officiel ne compile pas sur mon linux récent. Pour ceux qui ont le même problème, la distribution gentoo a <a href="http://riksun.riken.go.jp/pub/pub/Linux/gentoo/media-gfx/pngrewrite/files/pngrewrite-1.3.0-gcc44.patch">un patch</a> disponible. Il suffit de le télécharger là où vous aurez décompacté le code source de pngrewrite et de lancer <kbd>patch -p0 &lt; pngrewrite-1.3.0-gcc44.patch</kbd> puis de taper l&#8217;habituel <kbd>make</kbd>.</p>
<p>Voilà, maintenant vous savez.</p>
<p>J&#8217;aurai bien fait des paquets Ubuntu pour pngrewrite et pngout mais je ne trouve pas la licence du premier et le second interdit explicitement de reditribuer l&#8217;exécutable résultat. Si j&#8217;ai le courage je tenterai peut être des paquets &laquo;&nbsp;tricheur&nbsp;&raquo; qui téléchargent sur Internet lors de leur installation mais ça perd un des intérêts.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/09/pngrewrite-sous-linux/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Performance ressentie avec Mozilla</title>
		<link>http://performance.survol.fr/2009/08/performance-ressentie-avec-mozilla/</link>
		<comments>http://performance.survol.fr/2009/08/performance-ressentie-avec-mozilla/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 10:00:39 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[idées]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[navigateur]]></category>
		<category><![CDATA[perception]]></category>
		<category><![CDATA[ressenti]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=741</guid>
		<description><![CDATA[Ici je m&#8217;attache beaucoup aux chiffres : temps de chargement complet, latence, nombre de composants, etc. J&#8217;ai besoin de convaincre et seuls les chiffres ont l&#8217;objectivité nécessaire pour pouvoir travailler avec des gens non convaincus. Toutefois, une fois dépassé ce &#8230; <a href="http://performance.survol.fr/2009/08/performance-ressentie-avec-mozilla/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ici je m&#8217;attache beaucoup aux chiffres : temps de chargement complet, latence, nombre de composants, etc. J&#8217;ai besoin de convaincre et seuls les chiffres ont l&#8217;objectivité nécessaire pour pouvoir travailler avec des gens non convaincus.</p>
<p>Toutefois, une fois dépassé ce stade il faudrait se détacher un peu des chiffres pour parler de performance ressentie et pas toujours de performance mesurée. Parfois peu importe la durée de l&#8217;attente si on voit que nous progressons régulièrement et que l&#8217;attente n&#8217;est pas frustrante en elle même. C&#8217;est vrai aux caisses d&#8217;un supermarché comme sur une page web.</p>
<p>Les éditeurs de navigateurs l&#8217;ont bien compris. Ils jouent sur les indicateurs de chargement et sur l&#8217;interface pour donner une impression de vitesse à l&#8217;utilisateur. L&#8217;impression de vitesse est l&#8217;unique chose qui compte pour ce dernier, même si au final ça veut dire que les temps mesurés sont objectivement plus lents.</p>
<p>C&#8217;est avec cette idée en tête que je vous propose de lire le document de <a href="https://wiki.mozilla.org/Perceived_Performance">Mozilla à propos de la performance perçue</a>. On y retrouve certaines techniques à mettre en oeuvre sur les versions actuelles ou futures de Firefox. Le document mériterait une traduction tellement il fourmille d&#8217;idées, dont certaines sont lumineuses.  Je vous en retransmet certaines, avec mes commentaires.<span id="more-741"></span></p>
<h3>Dans les &laquo;&nbsp;on reste très classique&nbsp;&raquo;</h3>
<p>Préchargement de Firefox au démarage de windows : On va _encore_ ralentir l&#8217;ouverture de session pour pouvoir avoir une ouverture quasi instantanée de Firefox lors du clic sur l&#8217;icone. Le résultat sur le ressenti de performance est évident mais je suis assez mitigé. J&#8217;en ai ma claque des sessions qui prennent 5 minutes à s&#8217;ouvrir à cause de tout ce qui est chargé dans le systray. Là on déshabille Paul pour habiller Pierre et on donne l&#8217;impression à l&#8217;utilisateur que c&#8217;est la faute de Paul. Je comprend l&#8217;effet mais je n&#8217;aime pas le principe.</p>
<p>Garder le logiciel ouvert un bref moment après sa fermeture, au cas où l&#8217;utilisateur le réouvre juste après : Ca me fait penser à la fermeture de session de mon poste Linux. Il prend en compte mais n&#8217;éteint le poste que 60 secondes après la demande (sauf si je confirme ma demande), me laissant la possibilité de changer d&#8217;avis. J&#8217;aime bien le principe mais normalement l&#8217;OS fait une partie du travail en mettant en cache toutes les bibliothèques logicielles. Normalement un second démarage est déjà plus rapide. Si ce n&#8217;est pas le cas je préfèrerai qu&#8217;ils trouvent pourquoi plutôt que de chercher des astuces (oui, je sais, c&#8217;est facile à dire).</p>
<p>Installer un intersticiel (splash screen) : C&#8217;est assez dangereux. D&#8217;un côté on donne immédiatement un feedback à l&#8217;utilisateur, ce qui est très bien pour donner une impression de réactivité et éviter qu&#8217;il lance deux fois le navigateur en pensant que ça n&#8217;a pas fonctionner (je compatis, ça m&#8217;arrive régulièrement), de l&#8217;autre on va renforcer l&#8217;idée de l&#8217;utilisateur qu&#8217;il s&#8217;agit d&#8217;un logiciel long à charger alors que d&#8217;autres sont instantanés sans intersticiel.</p>
<h3>Dans les &laquo;&nbsp;c&#8217;est astucieux&nbsp;&raquo;</h3>
<p>Accélérer l&#8217;indicateur de chargement : Ils disent qu&#8217;ils le font à chaque version. Un indicateur qui tourne plus rapidement c&#8217;est pour l&#8217;utilisateur un logiciel qui fonctionne plus rapidement. C&#8217;est idiot mais on a tous le même ressenti inconscient. Par contre on va vite arriver à une limite pour ce genre d&#8217;astuces.</p>
<p>Avoir une progression non linéaire pour l&#8217;indicateur de progression : Faire qu&#8217;il avance plus lentement au début (quand l&#8217;utilisateur accepte l&#8217;attente) et plus rapidement vers la fin (quand il en a marre et a besoin de voir que &laquo;&nbsp;ça avance bien&nbsp;&raquo;). Dans le même ordre d&#8217;idée la suggestion précédente propose de faire accélérer l&#8217;indicateur de chargement (celui qui tourne) avec le temps.</p>
<h3>Dans la catégorie &laquo;&nbsp;ça c&#8217;est génial&nbsp;&raquo;</h3>
<p>Utiliser les composants en cache en attendant de vérifier qu&#8217;ils sont toujours frais : J&#8217;adore l&#8217;idée. Il s&#8217;agit d&#8217;utiliser les feuilles de styles, les images en cache en parallèle aux requêtes HTTP de revalidation. S&#8217;il s&#8217;avère que le contenu a changé, alors on mettra la page à jour. On tient là une réelle avancée. Il faudrait peut être toutefois montrer à l&#8217;utilisateur que l&#8217;image en question est potentiellement temporaire (par exemple la griser légèrement, ou monter le gamma : l&#8217;image reste visible mais on voit qu&#8217;elle est &laquo;&nbsp;en cours&nbsp;&raquo;).</p>
<p>Dans le même ordre d&#8217;idée on propose, à défaut de réutiliser les images elles-mêmes, de réserver la place dans le rendu en fonction de la taille de l&#8217;image qui est en cache. On évite de trop triturer la page, ce qui est une bonne chose, mais là je suis moins enthousiaste. Sur une page ou une connexion lente, ça peut inciter à réserver des places vides pendant longtemps, et déteriorer le ressenti utilisateur au lieu de l&#8217;améliorer. Je préfère nettement l&#8217;idée d&#8217;utiliser l&#8217;image elle-même, car l&#8217;utilisateur a au moins un contenu utile.</p>
<p>Mieux, on propose même de lancer immédiatement des requêtes vers les scripts et feuilles de styles référencées dans la page en cache en attendant de recevoir la nouvelle page. C&#8217;est quelque chose qui peut réduire le chargement de la page de plusieurs centaines de milli-secondes, plus sur les pages HTML vraiment lentes. Je ne sais cependant pas si le rapport bénéfice sur complexité est assez intéressant pour que ce soit implémenté. Il faudrait en effet que ces requêtes aient une basse priorité par rapport aux autres requêtes (histoire qu&#8217;on ne précharge pas en priorité des choses qui sont potentiellement inutiles) et que ces requêtes soient annulées dès qu&#8217;on sait que la page HTML a changée.</p>
<p>Plus intéressant encore : charger la page à partir du cache en attendant que la nouvelle page soit chargée. L&#8217;idée est intéressante mais la réalisation risque d&#8217;être difficile. La page en cache fait probablement référence à des composants qui eux ne sont pas en cache (les pubs) ou peut faire des requêtes Ajax. Est-ce pertinent d&#8217;occuper le réseau avec cette ancienne page ? Pire, on va aussi occuper le cpu puisque beaucoup de sites ont des pages qui mettent un temps significatif à effectuer le rendu même quand tout est en cache. On risque de ralentir inutilement la machine.</p>
<p>Pourquoi dis-je que c&#8217;est encore plus intéressant alors que je détruis l&#8217;idée ? parce que j&#8217;avais ça sur Safari (si je choisis une des pages proposées au démarage c&#8217;est d&#8217;abord une image de la page en cache qui se charge le temps que la page réelle arrive) et j&#8217;ai ça depuis peu sur gmail (le temps que gmail se charge j&#8217;ai une version HTML non clicable des titres des quelques derniers mails de ma boite). Ca a l&#8217;air inutile mais ça améliore vraiment l&#8217;expérience. On peut se concentrer immédiatement sur la tâche prévue au lieu d&#8217;attendre que la page se charge. La performance ressentie c&#8217;est finalement surtout ça.</p>
<h3>Alors ?</h3>
<p>Je laisse les histoire d&#8217;indicateurs plus ou moins rapides à d&#8217;autres mais je verrai bien les effets suivants (cumulatifs) :</p>
<ul>
<li> S&#8217;il s&#8217;agit d&#8217;une page fréquemment visitée (en bookmark ?) charger une image de la page telle qu&#8217;elle était la dernière fois en attendant que la page se charge effectivement. Point bonus si les liens restent clicables (mais je n&#8217;ai pas besoin des autres interactions avec la page comme le javascript).</li>
<li>Quand la page arrive, on utilise par défaut immédiatement les précédentes versions des images et feuilles de style en attendant les nouvelles. Les images sont toutefois grisées/blanchies pour bien symboliser l&#8217;état &laquo;&nbsp;en chargement&nbsp;&raquo;.</li>
</ul>
<p>Notez que cela demande d&#8217;augmenter l&#8217;espace dédié au cache, et pour les pages ciblées de mettre en cache même ce qu&#8217;habituellement on n&#8217;y met pas (quitte à identifier que c&#8217;est un cache déjà expiré).</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/08/performance-ressentie-avec-mozilla/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Page lente = taux d&#8217;abandon important</title>
		<link>http://performance.survol.fr/2009/08/page-lente-taux-dabandon-important/</link>
		<comments>http://performance.survol.fr/2009/08/page-lente-taux-dabandon-important/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 10:00:06 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[abandon]]></category>
		<category><![CDATA[Artur Bergman]]></category>
		<category><![CDATA[statistiques]]></category>
		<category><![CDATA[Steve Souders]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=731</guid>
		<description><![CDATA[On en parlait il y a deux semaines dans le résumé de Steve Souders mais il semble que la statistique mise en avant avait peut être quelques défauts. On en a reparlé entre temps avec un joli graphique en camembert, &#8230; <a href="http://performance.survol.fr/2009/08/page-lente-taux-dabandon-important/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On en parlait il y a deux semaines dans <a href="http://performance.survol.fr/2009/07/compte-rendu-des-conferences-velocity-steve-souders/">le résumé de Steve Souders</a> mais il semble que la statistique mise en avant avait peut être quelques défauts. On en a reparlé entre temps avec <a href="http://performance.survol.fr/2009/07/pourquoi-partez-vous/">un joli graphique en camembert</a>, et on a encore reparlé de la pertinence de la statistique.</p>
<p>Il nous reste deux statistiques qui vont encore dans le même sens : Yahoo! affirment que sur leur site auto, ajouter 400ms au chargement de la page fait monter le taux d&#8217;abandon de 5 à 9%. Akamaï affirment eux qu&#8217;<a href="http://performance.survol.fr/2008/07/combien-attendre/">au delà de 4 secondes, le taux d&#8217;abandon devient vraiment important</a>.</p>
<h3>Encore des chiffres</h3>
<p>C&#8217;est Artur Bergman qui nous donne encore du grain à moudre dans le dernier slide de sa présentation à l&#8217;<a href="http://en.oreilly.com/oscon2009">OSCON</a>. Il a mené une étude à l&#8217;aide de Google Analytics pour croiser le taux de rebond et le temps de chargement de la page. Les résultats sont tels que je les attendais : une courbe assez claire, presque une droite, qui confirme que les pages lentes sont de natures à faire fuir les utilisateurs.<span id="more-731"></span></p>
<h3><a href="http://performance.survol.fr/wp-content/uploads/2009/08/3716344792_e86a1c25f4.jpg"><img class="aligncenter size-full wp-image-734" title="abandons en fonction du temps de chargement" src="http://performance.survol.fr/wp-content/uploads/2009/08/3716344792_e86a1c25f4.jpg" alt="abandons en fonction du temps de chargement" width="500" height="388" /></a></h3>
<p>Vous voulez faire pareil ? les quelques lignes de javascript sont données dans <a href="http://www.stevesouders.com/blog/2009/07/27/wikia-fast-pages-retain-users/#comment-730">les commentaires du billet de Steve Souders</a> à ce sujet.</p>
<p>Notez qu&#8217;il reste potentiellement un biais sur la statistique : Les utilisateurs qui arrivent sur le site pour la première fois sont ceux qui auront légitimement le plus fort taux de rebond. Or ce sont aussi ceux qui n&#8217;ont aucun composant en cache et qui du coup ont le temps de chargement le plus long. Toutefois entre 100ms et 5s il y a une grande étendue, le fait que le graphique soit assez linéaire au lieu d&#8217;avoir une explosion du taux de rebond tout à droite tend à accréditer que ce biais n&#8217;est pas si important par rapport à l&#8217;influence du temps de réponse lui même (voire que peut être, au contraire, une partie du taux de rebond lorsqu&#8217;on arrive sur un nouveau site est due justement au fait que la page se charge lentement lors de ce premier accès).</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/08/page-lente-taux-dabandon-important/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Velocity, les armes secrètes d&#8217;AOL</title>
		<link>http://performance.survol.fr/2009/08/velocity-aol/</link>
		<comments>http://performance.survol.fr/2009/08/velocity-aol/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 10:00:03 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[AOL]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Dave Artz]]></category>
		<category><![CDATA[jsmin]]></category>
		<category><![CDATA[middims]]></category>
		<category><![CDATA[modjsmin]]></category>
		<category><![CDATA[mod_concat]]></category>
		<category><![CDATA[publicité]]></category>
		<category><![CDATA[sonar]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=707</guid>
		<description><![CDATA[Toujours aux conferences Velocity de juin dernier, Dave Artz d&#8217;AOL mérite un billet propre. Je regrette de ne pas en avoir trouvé la vidéo au milieu des autres vidéos Velocity. Modules apache La présentation débute par des liens vers quelques &#8230; <a href="http://performance.survol.fr/2009/08/velocity-aol/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Toujours <a href="http://performance.survol.fr/avec/velocity/">aux conferences Velocity</a> de juin dernier, <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/7611">Dave Artz</a> d&#8217;AOL mérite un billet propre. Je regrette de ne pas en avoir trouvé la vidéo au milieu des autres <a href="http://velocityconference.blip.tv/?sort=date;date=;view=archive;user=velocityconference;nsfw=dc;s=posts;page=1">vidéos Velocity</a>.<span id="more-707"></span></p>
<h3>Modules apache</h3>
<p>La présentation débute par des liens vers quelques modules Apache pour automatiser les tâches que je recommande ici régulièrement : concaténation, minimisation, retravail des images.</p>
<p>Pour la concaténation des javascript et css il propose <a href="http://code.google.com/p/modconcat/">mod_concat</a> dont j&#8217;avais <a href="http://performance.survol.fr/2009/03/encore-des-outils/">brièvement parlé en mars</a>. Il s&#8217;agit simplement d&#8217;automatiser le processus de concaténation des fichiers javascript et css via un module Apache. Les entêtes de cache utilisées sont celles du fichier le plus récent, vous n&#8217;avez rien à gérer, il suffit d&#8217;ajouter les noms de fichiers souhaités dans l&#8217;URL.</p>
<p>Pour la minimisation nous propose <a href="http://code.google.com/p/modjsmin/">modjsmin</a>, qui est simplement le script de minimisation de Douglas crockford transformé en filtre Apache. Côté images il y a c&#8217;est <a href="http://code.google.com/p/moddims/">moddims</a> qui redimensionne et découpe les images à la demande avec Image Magick. Si vous vous devez d&#8217;utiliser des solutions dynamiques alors ce sont probablement des liens à suivre, mais je continue à penser qu&#8217;il vaut mieux traiter ça hors ligne à la publication et pas sur le serveur web.</p>
<h3>Les publicités</h3>
<p>La seconde partie de la présentation est plus intéressante. Notamment Dave donne sa solution pour le problème persistant de tout intégrateur web : les publicités lentes et bloquantes. Il propose ici de les <a href="http://www.artzstudio.com/files/fif-demo/">charger dans une iframe</a> de façons à ce que le contenu de la page générale continue de se charger, puis récupère le DOM et les styles pour les regreffer dans le document principal (ce qui est obligatoire si votre publicité risque d&#8217;interagir avec le reste de la page). En pratique il y a quelques écueils quand j&#8217;avais essayé, tout dépend donc de ce que vous faites tourner en publicité.</p>
<h3>Chargement à la demande</h3>
<p>Dave a aussi mis au point un mécanisme que j&#8217;aime beaucoup. Il s&#8217;agit d&#8217;exploiter la différence entre la mesure brute de la performance et le ressenti de performance. L&#8217;utilisateur n&#8217;a pas besoin d&#8217;une page qui se charge vite, il a besoin d&#8217;une page qui charge vite ce qu&#8217;il a sous les yeux. Seuls 20 % des utilisateurs lisant jusqu&#8217;à la fin de la page, il est envisageable de ne charger les composants du bas de page qu&#8217;à la demande, quand l&#8217;utilisateur passe au dessus. Dave a donc fait un petit outil appelé <a href="http://www.artzstudio.com/files/sonar/">Sonar</a> pour détecter quand charger quel élément, et faire les ajouts/requêtes nécessaires.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/08/velocity-aol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Velocity, publicité, reflow, CDN, ajax et gzip</title>
		<link>http://performance.survol.fr/2009/08/velocity-quelques-conferences/</link>
		<comments>http://performance.survol.fr/2009/08/velocity-quelques-conferences/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 10:00:20 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[cdn]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[Mike Brittain]]></category>
		<category><![CDATA[moddim]]></category>
		<category><![CDATA[publicités]]></category>
		<category><![CDATA[reflow]]></category>
		<category><![CDATA[statistiques]]></category>
		<category><![CDATA[Tony Gentilcore]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=698</guid>
		<description><![CDATA[Je poursuis la lecture des vidéos et des présentations des conférences Velocity de juin dernier. Au delà de Gzip La première chose à activer sur les serveurs c&#8217;est gzip. Il s&#8217;agit de compresser tous les contenus texte en provenance du &#8230; <a href="http://performance.survol.fr/2009/08/velocity-quelques-conferences/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Je <a href="http://performance.survol.fr/avec/velocity/">poursuis</a> la lecture <a href="http://en.oreilly.com/velocity2009/public/schedule/proceedings">des vidéos et des présentations des conférences Velocity</a> de juin dernier.<span id="more-698"></span></p>
<h3>Au delà de Gzip</h3>
<p>La première chose à activer sur les serveurs c&#8217;est gzip. Il s&#8217;agit de compresser tous les contenus texte en provenance du serveur avant de les faire transiter par le réseau. Si vous ne l&#8217;avez pas fait, activez gzip sur votre serveur web ! <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/9072">Tony Gentilcore nous parle de 70% de gain</a> en volume de téléchargement. De mon expérience ça donne un peu plus mais même à 70 % c&#8217;est indispensable.</p>
<p>Là où Tony amène une information nouvelle, c&#8217;est que 15 % des clients ne déclarent pas supporter gzip, hors robots. Il blâme les mauvais proxys et les outils de sécurité privés comme Norton Internet Security, Zone Alarm, McAfee Internet Security, etc. Ces outils sont généralement des plaies, et pas que côté performance, et voilà qu&#8217;ils s&#8217;autorisent à modifier les entêtes HTTP envoyées par le navigateur. Bref, c&#8217;est 15 % des visiteurs qui auront une page non compressée et il va falloir trouver une solution.</p>
<p>Il propose donc de tenter de détecter le support gzip réel du navigateur via une iframe. Le contenu de l&#8217;iframe est envoyé zippé, quoi que déclare le navigateur. Si le navigateur décode le contenu, on lui pose un cookie pour retenir qu&#8217;il faut lui envoyer le contenu zippé malgré l&#8217;absence de l&#8217;entête HTTP appropriée.</p>
<p>J&#8217;aime bien l&#8217;idée de l&#8217;autodétection mais attention à ne la mettre en oeuvre que pour ces 15 % de clients mal configurés. Hors de question d&#8217;imposer une iframe aux autres.</p>
<h3>Ajax à Facebook</h3>
<p>La seconde présentation dont je voulais vous parler c&#8217;est celle de Facebook. Malheureusement, après avoir tenté plusieurs angles d&#8217;approche, je me rend compte que je suis incapable de vous en faire un résumé. Le plus simple est donc de vous laisser aller voir <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/7611">les fichiers</a> ou <a href="http://velocityconference.blip.tv/file/2293221/">la vidéo</a> de la présentation. Ils présentent leur démarche pour améliorer les performances, et plus spécifiquement comment ils sont passés à un modèle pur Ajax pour la navigation (le conteneur HTML reste, le contenu est chargé via Ajax).</p>
<p>Je fais l&#8217;impasse sur la moitié de la présentation qui fait état de leurs outils de surveillance pour passer à la fin. On y trouve quelques graphiques qui montrent le nombre de pages vues suivant les performances obtenues. Comme Steve Souders le disait dans son résumé, ceux qui ont les moins bonnes performances sont aussi ceux qui visitent le moins de pages.</p>
<p>Comme on me l&#8217;a signalé il y a peu (merci Rik), il est possible que leur méthodologie soit aussi en cause (moins on visite de pages, plus la première page, cache vide, aura d&#8217;influence dans le calcul et moins bon sera le temps de chargement moyen, la courbe cumule alors un biais du à la mesure en plus de l&#8217;effet qu&#8217;on cherche à mesurer) mais il est tout de même intéressant de voir que le profil de chaque site est différent. Certains semblent plus dépendants des performances que d&#8217;autres.</p>
<h3>Un peu de CDN</h3>
<p>C&#8217;est ensuite Mike Brittain qui <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/7521">nous parle de CDN</a>. Rien de bien nouveau à première vue mais le fichier de la présentation manque cruellement d&#8217;une bande sonore ou d&#8217;une vidéo, il y a peut être eu bien plus de choses intéressantes à l&#8217;oral.</p>
<p>Pour ceux qui n&#8217;ont pas travaillé avec un CDN vous y retrouverez tout de même un ou deux schémas explicatifs, et en particulier sur la notion de serveur d&#8217;origine pour un CDN (si le CDN n&#8217;a pas une ressource, il va la chercher sur vos propres serveurs pour la mettre en cache de son côté par la suite).</p>
<p>La dernière partie aurait elle aussi fortement bénéficiée d&#8217;un enregistrement sonore. On y parle de quelque chose qui est très efficace mais difficile à mettre en oeuvre : un squelette de page générique qu&#8217;on peut mettre en cache voire servir depuis le CDN et qui reçoit toutes les personnalisations et informations temps réel via des requêtes utilisateurs en javascript. Si vous avez des pages d&#8217;accueil lourdes que vous souhaitez mettre en cache, c&#8217;est la solution à tester (mais ça demande beaucoup de boulot).</p>
<h3>Et du reflow</h3>
<p>On va enchaîner avec Lindsey Simon, qui parle de <a href="http://performance.survol.fr/avec/reflow/">reflow</a>. Nous avons abordé la chose plusieurs fois ici mais je vous recommande de jeter un oeil à <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/9340">la présentation</a> qui est un bon résumé. Il identifie comme problèmes majeurs impactant lors des reflow : le nombre d&#8217;éléments, la profondeur de l&#8217;arbre DOM, le nombre de sélecteurs CSS, la complexité des sélecteurs CSS, et le type de changement opéré (display block, visibilitiy hidden, etc.)</p>
<p>On y retrouve aussi la recommandation de faire les manipulations DOM lourdes hors de l&#8217;arbre général (fragment dom), hors du rendu (display none), hors du flux (position absolue), ou au moins en une fois en changeant les classes HTML plutôt que les attributs de style. On limite alors l&#8217;impact et le besoin d&#8217;un recalcul de toute la page.</p>
<h3>Encore de la pub</h3>
<p>Une des présentations que j&#8217;attendais c&#8217;est celle sur <a href="http://en.oreilly.com/velocity2009/public/schedule/detail/8959">la performance des publicités</a>. La présentation, conjointe avec plein de gens biens, est finalement décevante. On y explique très bien les problèmes, mais il manque les solutions. Il faut avouer que c&#8217;était un peu présenté comme un panel d&#8217;expert donc l&#8217;intéressant est à l&#8217;oral. On trouve juste deux liens sur des recommandations de bonnes pratiques.  Ça peut toutefois être bien utile pour donner au moins un guide à vos agences de pub (si vous êtes en position d&#8217;imposer quelque chose, ce qui est rarement le cas). Par contre au moins ici il y a <a href="http://velocityconference.blip.tv/file/2293389?filename=VelocityConf-Velocity09EricGoldsmithArturBergmanTonyRalphBryantMason875.mov">un enregistrement vidéo</a>.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 37px; width: 1px; height: 1px;">
<h2 class="fn">Lindsey Simon</h2>
</div>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/08/velocity-quelques-conferences/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Punypng, un smushit-like</title>
		<link>http://performance.survol.fr/2009/08/punypng-smushit-like/</link>
		<comments>http://performance.survol.fr/2009/08/punypng-smushit-like/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 10:00:16 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[jpeg]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[punypng]]></category>
		<category><![CDATA[smushit]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=691</guid>
		<description><![CDATA[Smushit a disparu, ou presque. On nous parlait d&#8217;ouvrir le code source. Il y avait une API pour faire des tests automatisés. Il était possible d&#8217;optimiser tout un site web. Le site a été repris sur un hébergement interne à &#8230; <a href="http://performance.survol.fr/2009/08/punypng-smushit-like/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://developer.yahoo.com/yslow/smushit/">Smushit</a> a disparu, ou presque. On nous parlait d&#8217;ouvrir le code source. Il y avait une API pour faire des tests automatisés. Il était possible d&#8217;optimiser tout un site web. Le site a été repris sur un hébergement interne à Yahoo! et depuis il y a eu des indisponibilités et plus de régressions que d&#8217;améliorations. Le concept est toujours très intéressant mais finalement très limité.</p>
<p>J&#8217;ai annoncé il y a quelques temps que je comptais développer un outil similaire avec un code source ouvert et au moins une version en ligne de commande pour être intégré dans des mécanismes automatisés de publication (plutôt que d&#8217;attendre publication pour ensuite corriger image par image). Ca viendra, mais ça prend du temps parce que je veux faire les choses bien. Je compare donc tous les outils que j&#8217;ai pu voir pour comparer leurs résultats, avec différentes options. Il faut tenter de prendre un échantillon d&#8217;images représentatif, repérer les avantages et les défauts de chaque outil suivant le format mais aussi le type d&#8217;image (taille, transparence, nombre de couleurs, etc.) puis faire un choix en fonction du temps de traitement (prendre le plus efficace sur la taille finale n&#8217;est pas forcément la meilleure idée). Bref, ça viendra mais ce n&#8217;est pas pour demain.</p>
<p>Par contre vous avez désormais <a href="http://www.gracepointafterfive.com/punypng">punypng</a>. Je n&#8217;ai pas vu de code source, il n&#8217;y a pas de version en ligne de commande, ça n&#8217;accepte pas une URL de page HTML pour en extraire toutes les images (quoi qu&#8217;il doit être assez simple d&#8217;adapter l&#8217;ancienne extension smushit pour cela) mais ils innovent. Ils ont repris l&#8217;idée d&#8217;optimiser les images contenant des pixels avec une information RGB mais totalement transparents, ils font plus de travail sur les jpeg, et ils tentent d&#8217;avoir une interface plus efficace que smushit. C&#8217;est déjà ça et c&#8217;est bien.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/08/punypng-smushit-like/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
