<?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; etag</title>
	<atom:link href="http://performance.survol.fr/avec/etag/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>Google SDCH et HTTP</title>
		<link>http://performance.survol.fr/2009/02/google-sdch-et-http/</link>
		<comments>http://performance.survol.fr/2009/02/google-sdch-et-http/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 11:00:50 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[conférence]]></category>
		<category><![CDATA[etag]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google toolbar]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Internet Explorer]]></category>
		<category><![CDATA[sdch]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[velocity]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=401</guid>
		<description><![CDATA[On vous a dit de compresser vos échanges HTTP avec gzip ou deflate, des les identifier avec des ETag, mais pouvons nous faire mieux ? C&#8217;est la question abordée par certaines équipes de Google (slides disponibles) en juin dernier aux &#8230; <a href="http://performance.survol.fr/2009/02/google-sdch-et-http/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On vous a dit de c<a href="http://performance.survol.fr/2008/04/compression-avant-transfert/">ompresser vos échanges HTTP avec gzip ou deflate</a>, des les <a href="http://performance.survol.fr/2008/06/desactiver-les-etags/">identifier avec des ETag</a>, mais pouvons nous faire mieux ? C&#8217;est <a href="http://en.oreilly.com/velocity2008/public/schedule/detail/2598">la question abordée par certaines équipes de Google</a> (<a href="http://assets.en.oreilly.com/1/event/7/Shared%20Dictionary%20Compression%20Over%20HTTP%20Presentation.ppt">slides disponibles</a>) en juin dernier aux <a href="http://en.oreilly.com/velocity2008/">conférences Velocity 2008</a>. Ils partent du principe qu&#8217;une page web est composée de plusieurs éléments, dont certains sont communs à plusieurs pages et ne nécessitent pas d&#8217;être renvoyés.</p>
<p>Google propose donc <a href="http://sdch.googlegroups.com/web/Shared_Dictionary_Compression_over_HTTP.pdf?gda=Znx6Cl0AAABP1YGtttuzY8Xt5fWEme6RW917cp3OCWgHAcxHpzR4UA12alwZyuoqsE-BiY88xfLrk0HuZRJs1gcUl6mErWX6yPI8Lq4cE5IelfQO528z8OU2_747KStNgkfeVUa7Znk">un codage supplémentaire pour HTTP qui s&#8217;appelle SDCH</a>,<span id="more-401"></span> et qui peut s&#8217;ajouter avant gzip ou deflate. Le serveur découpe sa page en paquets, qui peuvent chacun avoir des métadonnées et une expiration explicite. Le tout est stocké dans un dictionnaire du côté du navigateur, un peu comme les cookies actuellement. Quand le navigateur demande une page il envoie les identifiants de paquet qu&#8217;il connaît déjà, le serveur peut donc se contenter de compléter ce qui manque. On a donc le même fonctionnement que les Etag du point de vue de la négociation.</p>
<p>Les entêtes HTTP en jeu sont <code>Avail-Dictionnary</code> (l&#8217;équivalent de <code>Etag</code> pour SDCH) et <code>X-SDHC</code> (pour déclarer la version et l&#8217;implémentation de SDCH utilisée) du côté du navigateur, et <code>X-SDCH-Dictionary</code> du côté du serveur.</p>
<p>Reste que cela implique que la réponse du serveur soit codée suivant une forme bien particulière, non compatible avec les anciens clients HTTP. Google a donc prévu une auto-négociation et la réutilisation de l&#8217;entête Accept-Encoding. Grâce à cela, les navigateurs qui le peuvent auront un contenu SDCH puis compressé par gzip, les autres se contenteront du gzip.</p>
<p>Si vous voyez passer un <code>Accept-Encoding: sdch, gzip</code> c&#8217;est que votre navigateur supporte ce codage. Si en plus vous voyez une réponse <code>Content-Encoding: sdch, gzip</code> c&#8217;est que le serveur a bien compris que vous supportiez SDCH et va utiliser ce codage.</p>
<p> Je n&#8217;ai vu aucun mouvement ni aucune volonté de mouvement de la part de Mozilla, en fait depuis la communication de Google l&#8217;idée n&#8217;a pas l&#8217;air d&#8217;avoir fait recette où que ce soit. Seul <a href="http://groups.google.com/group/SDCH">un groupe de discussion</a>, quasi vide, a fait suite à la communication de juin 2008.</p>
<p><a href="http://groups.google.com/group/chromium-dev/browse_thread/thread/f3e9b8f3ea603129?pli=1">Chrome a un premier support de SDCH</a> (non activé par défaut pour la version publique actuelle) mais ça ne changera pas la face du monde. Le point intéressant est toutefois que <a href="http://googlesystem.blogspot.com/2009/02/google-search-pages-load-faster-in.html">SDCH est automatiquement intégré à Microsoft Internet Explorer si la Google toolbar est installée</a>. La page d&#8217;aide de Google indique <a href="http://www.google.com/support/toolbar/bin/answer.py?hl=en&#038;answer=113087">comment désactiver tout ça</a>. </p>
<p>Si l&#8217;idée peut être intéressante, je suis un peu étonné que Google tente de l&#8217;imposer de lui-même sans avoir le support d&#8217;au moins un intervenant (Mozilla, Opera, Apple, Microsoft) ou une publication normative officielle de type RFC. La seule chose qui sauve cet unilatéralisme est la présence d&#8217;une version dans l&#8217;auto-négociation (donc on pourra gérer d&#8217;éventuelles évolutions dans les spécifications si jamais tout le monde se met autour de la table pour en rediscuter).</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2009/02/google-sdch-et-http/feed/</wfw:commentRss>
		<slash:comments>5</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>Désactiver les ETags ?</title>
		<link>http://performance.survol.fr/2008/06/desactiver-les-etags/</link>
		<comments>http://performance.survol.fr/2008/06/desactiver-les-etags/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 10:00:19 +0000</pubDate>
		<dc:creator>Éric</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[etag]]></category>
		<category><![CDATA[réseau]]></category>

		<guid isPermaLink="false">http://performance.survol.fr/?p=44</guid>
		<description><![CDATA[Après un test de votre site sur Yslow vous retrouvez une recommandation qui vous propose de désactiver les ETags. Une recherche rapide vous mène sur les pages de l&#8217;équipe performance de Yahoo! qui vous disent la même chose. Qu&#8217;est ce &#8230; <a href="http://performance.survol.fr/2008/06/desactiver-les-etags/">Continuer la lecture <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Après un test de votre site sur Yslow vous retrouvez une recommandation qui vous propose de désactiver les ETags. Une recherche rapide vous mène sur les pages de l&#8217;équipe performance de Yahoo! qui vous disent la même chose.</p>
<h3>Qu&#8217;est ce qu&#8217;un ETag ?</h3>
<p>Un ETag sert au serveur web à identifier une ressource et sa version. La valeur d&#8217;un ETag est libre, la seule contrainte est que l&#8217;ETag soit unique pour une URL donnée. Deux versions d&#8217;un même document auront donc deux ETags différents ; dans le temps la valeur d&#8217;un ETag ne devrait pas changer si le document lui même n&#8217;évolue pas. <span id="more-39"></span>Cet ETag est renvoyé par défaut à chaque fois que le serveur web renvoie un contenu. On obtient donc quelque chose comme suit dans les entêtes d&#8217;une réponse HTTP 1.1 :</p>
<pre>HTTP/1.1 200 OK
Date: Sun, 08 Jun 2008 13:53:40 GMT
Last-Modified: Mon, 04 May 2008 19:43:54 GMT
<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19">Etag</a>: "3a4ea77d-baa-f3a45280"</pre>
<p>Le navigateur s&#8217;en sert pour identifier les versions des documents qu&#8217;il met en cache. Quand on lui demandera de nouveau la même ressource, il fournira cet identifiant dans une entête de la requête HTTP. On parle alors d&#8217;une requête conditionnelle.</p>
<pre>GET /test.html HTTP/1.1
Host: www.example.org
If-Modified-Since: Mon, 05 May 2008 19:43:54 GMT
<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26">If-None-Match</a>: "3a4ea77d-baa-f3a45280"</pre>
<p>Le serveur compare l&#8217;ETag reçu par le navigateur avec celui de la version actuelle du document demandé. Si les deux ne correspondent pas c&#8217;est que le document a été modifié depuis le dernier accès et on le renvoie normalement. Si les deux sont identique alors le serveur web peut utiliser le code de retour <code>304</code> et demander au navigateur d&#8217;utiliser sa copie en cache. On évite alors de télécharger de nouveau le document, inutilement. C&#8217;est intéressant autant pour le serveur que pour le client :</p>
<pre>HTTP/1.1 304 Not Modified
Etag: "3a4ea77d-baa-f3a45280"</pre>
<h3>D&#8217;autres détails (presque) inutiles</h3>
<p>En réalité c&#8217;est même un peu plus complet que cela puisque le navigateur peut retenir plusieurs versions du même document dans son cache et les renvoie toutes, séparées par des virgules. De son côté le serveur peut aussi avoir plusieurs formats pour un même document. Il va donc comparer toutes les dernières versions avec les identifiants proposés par le navigateur, et retourner un 304 pour la première qui correspond, en spécifiant bien pour que ETag il renvoie ce statut.</p>
<p>On peut aller plus loin en utilisant des <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.3.3">identifiants dits forts et des identifiants dits faibles</a>. Ces derniers sont préfixés par <code>W/</code> et ne peuvent être utilisés que pour des requêtes GET et HEAD. Un identifiant faible est un identifiant qui peut correspondre à plusieurs représentations différentes d&#8217;un même document, ou à plusieurs versions d&#8217;une même représentation.</p>
<p>On trouve même la possibilité pour le navigateur d&#8217;utiliser un <code>If-None-Match:*</code>, qui ne va effectuer la requête que si la ressource ciblée n&#8217;existe pas encore. Soit que la représentation adaptée à cette requête particulière n&#8217;existe pas (version du navigateur par exemple), soit quelle n&#8217;a pas encore été générée et est générée à la demande.</p>
<p>Sur des requêtes de type POST ou PUT (en fait sur tout sauf GET et HEAD), la réponse n&#8217;est pas 304 (not modified) mais 412 (precondition failed). Sur un PUT le <code>If-None-Match:*</code> peut d&#8217;ailleurs gérer les problématiques de concurrence d&#8217;accès : la requête ne sera effectuée que la première fois, par la suite la ressource sera déjà crée et un statut 412 sera renvoyé.</p>
<h3>Les problèmes d&#8217;ETag</h3>
<p>En soit ce fonctionnement ne pose aucun problème. Il est supporté par l&#8217;essentiel des navigateurs et des serveurs. Quand un des intervenants ne connait pas les ETags ils sont ignorés et c&#8217;est le comportement <code>Last-Modified</code> / <code>If-Modified-Since</code> qui prend la main.</p>
<p>Il n&#8217;y a que deux problèmes potentiels : deux versions d&#8217;une même ressource avec le même ETag, ou deux ETags différents pour une même version d&#8217;une ressource. Dans le premier cas le navigateur risque de réutiliser son cache alors qu&#8217;il existe une mise à jour. Dans le second cas, celui qui nous préoccupe, le navigateur risque de re-télécharger un document qu&#8217;il a déjà en cache.</p>
<p>C&#8217;est ce dernier cas qui arrive parfois sur certains sites, et qui impacte les performances à cause de la bande passante utilisée inutilement. Cela arrive dès qu&#8217;il y a plusieurs serveurs derrière un même site web. Apache utilise par défaut un identifiant basé sur la date de dernière modification et l&#8217;inode du fichier. L&#8217;inode est garantit comme unique pour un même système de fichier.</p>
<p>S&#8217;il y a plusieurs serveurs, chacun a son propre système de fichier. L&#8217;inode sera différent sur chaque serveur, et le client risque de recevoir des ETag différents pour la même ressources. Pour peu que la requête du navigateur ne soit pas toujours gérée par le même serveur, tout le système de cache basé sur l&#8217;ETag sera mis en échec.</p>
<p>Sur certaines <a href="http://trac.lighttpd.net/trac/ticket/1279">anciennes versions de lighttpd</a>, des serveurs 32bits et des serveurs 64bits peuvent aussi donner des ETags différents bien que l&#8217;inode n&#8217;intervienne pas dans le calcul. </p>
<h3>Désactiver les ETags</h3>
<p><a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html">Conclusion simple et rapide</a> de l&#8217;équipe performance de Yahoo! : désactiver les Etags. En l&#8217;absence des ETags c&#8217;est en effet le mécanisme habituel de date de modification qui est utilisé pour générer les 304 et les caches. Ce système n&#8217;est pas parfait mais pour des ressources qui ne sont pas amenées à changer plusieurs fois par seconde il n&#8217;amène aucun problème.</p>
<p>En suivant les recommandations habituelles on ne modifie justement presque jamais une ressource statique, on créé la nouvelle version avec une nouvelle URL et on laisse l&#8217;ancienne telle quelle. Les ressources dynamiques, elles, à cause des personnalisations et des mises à jours très fréquentes, n&#8217;utilisent de toutes façons que rarement les 304 et ces systèmes de validation de cache. Quand elles le font c&#8217;est que les mises à jour ne sont pas trop fréquentes ; la limitation imposées par la résolution à la seconde des dates de modification n&#8217;est alors pas gênante.</p>
<p>Bref, on ne perd pas grand chose et on évite des problèmes dont on sait qu&#8217;ils vont survenir.</p>
<p><a href="http://httpd.apache.org/docs/2.2/mod/core.html#fileetag">Sous Apache</a> c&#8217;est fait avec <code>FileETag none</code>. Pour Microsoft IIS il y a <a href="http://support.microsoft.com/?id=922733">toute une procédure</a>.</p>
<h3>Réactiver les ETags ?</h3>
<p>Déjà, tant que vous avez un seul serveur derrière votre site web, n&#8217;hésitez pas : activez les ETags même si Yslow vous dit le contraire. Vous avez tout à y gagner et rien à y perdre.</p>
<p>Ensuite, activer tout de même les ETags n&#8217;est pas forcément une mauvaise idée. Le problème n&#8217;est pas sur la fonctionnalité elle-même, mais juste sur la façon par défaut pour Apache et IIS de générer ces identifiants. Bref, en général un cumul entre la date de modification et la taille du fichier suffit. Dans ce cas vous pouvez demander à Apache d&#8217;utiliser F<code>ileETag MTime Size</code>.</p>
<p>Enfin, ne changez pas et ne supprimez pas le calcul des ETags sur les sites qui utilisent DAV via le mod_dav_fs. Ce dernier risque de ne plus fonctionner de manière optimale.</p>
]]></content:encoded>
			<wfw:commentRss>http://performance.survol.fr/2008/06/desactiver-les-etags/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
