<?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>MilamberSpace &#187; HTTPD</title>
	<atom:link href="http://blog.milamberspace.net/index.php/category/apache/httpd/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.milamberspace.net</link>
	<description>JMeter (surtout) mais aussi l&#039;Informatique, Internet, etc.</description>
	<lastBuildDate>Sun, 29 Aug 2010 21:29:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Compression HTTP, ou comment réduire le temps réseau dans les performances d&#8217;une application</title>
		<link>http://blog.milamberspace.net/index.php/2008/07/06/compression-http-ou-comment-reduire-le-temps-reseau-dans-les-performances-dune-application-80.html</link>
		<comments>http://blog.milamberspace.net/index.php/2008/07/06/compression-http-ou-comment-reduire-le-temps-reseau-dans-les-performances-dune-application-80.html#comments</comments>
		<pubDate>Sun, 06 Jul 2008 16:29:06 +0000</pubDate>
		<dc:creator>Milamber</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTTPD]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Navigateur]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[mod_deflate]]></category>

		<guid isPermaLink="false">http://blog.milamberspace.net/?p=80</guid>
		<description><![CDATA[Avec JMeter on peut faire des tirs de performances (et d&#8217;autres choses) pour une application Web. Pour qu&#8217;une application soit performante, il est préférable qu&#8217;elle soit développée judicieusement, mais également qu&#8217;elle s&#8217;exécute sur un environnement performant. Dans ce dernier, il ne faut pas négliger la composante réseau qui peut souvent devenir un goulet d&#8217;étranglement au [...]]]></description>
			<content:encoded><![CDATA[<p style="">Avec JMeter on peut faire des tirs de performances (et d&#8217;autres choses) pour une application Web. Pour qu&#8217;une application soit performante, il est préférable qu&#8217;elle soit développée judicieusement, mais également qu&#8217;elle s&#8217;exécute sur un environnement performant. Dans ce dernier, il ne faut pas négliger la composante réseau qui peut souvent devenir un goulet d&#8217;étranglement au niveau de l&#8217;utilisateur.</p>
<p style="">En effet, vous allez développer une application hyper véloce, la faire fonctionner sur des serveurs hyper-rapides, mais votre utilisateur au bout de la ligne vous dit que c&#8217;est lent&#8230;</p>
<p style="">Vous (re)faites vos tir de charges, vous mesurez les performances, c&#8217;est excellent&#8230; sur votre réseau local. Vous placez un injecteur chez votre utilisateur final, et là c&#8217;est la surprise&#8230; c&#8217;est lent.</p>
<p style="">Le diagnostic est rapide : trop d&#8217;octets à transférer pour afficher un écran, avec une bande passante trop petite donc lenteurs. Et impossible d&#8217;augmenter la bande passante. Que faire ?<span id="more-80"></span></p>
<p style="">Bien entendu, il est possible (et il faut) optimiser ses pages HTML / XML, le taux de compression des images, etc. de son application. Tout ceci dans l&#8217;objectif de réduire le poids général en octets d&#8217;un écran.</p>
<p style="">Il y a aussi une astuce tout simple. La compression des données transitant entre le serveur Web et l&#8217;utilisateur final à travers la compression HTTP.</p>
<p style="">Cette compression basée sur l&#8217;algorithme des fichiers ZIP, est effectuée au niveau du serveur Web qui compresse à la volée les données à transmettre. Ensuite la décompression est assurée du coté des navigateurs Web.</p>
<p style="">Pour que cela marche, il faut bien entendu un navigateur récent (au moins IE 4.0, Firefox 1.0, etc) mais c&#8217;est le cas de tout le monde. Pour le serveur Web, il lui aussi doit être relativement récent (au moins IIS 5.0, Apache 2.x, etc). Il y a ensuite une configuration à faire à son niveau pour activer la compression.</p>
<p style="">Pour Apache, par exemple, c&#8217;est le module mod_deflate (et aussi mod_gzip) qui assure cette fonction. On peut ainsi ajouter dans son virtual host, les lignes suivantes (tirées que la documentation Apache) pour compresser tous les flux sauf les images.</p>
<pre># Insert filter</pre>
<pre>SetOutputFilter DEFLATE</pre>
<pre># Netscape 4.x has some problems...</pre>
<pre>BrowserMatch ^Mozilla/4 gzip-only-text/html</pre>
<pre># Netscape 4.06-4.08 have some more problems</pre>
<pre>BrowserMatch ^Mozilla/4\.0[678] no-gzip</pre>
<pre># MSIE masquerades as Netscape, but it is fine</pre>
<pre>BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</pre>
<pre># Don't compress images</pre>
<pre>SetEnvIfNoCase Request_URI \</pre>
<pre>\.(?:gif|jpe?g|png)$ no-gzip dont-vary</pre>
<p style="">Après le redémarrage du serveur Apache, le résultat donne, par exemple, pour la page d&#8217;accueil de ce blog (juste le contenu HTML) :</p>
<ul>
<li>Avant, sans compression : 50 198 octets transférés</li>
<li>Après, avec compression : 11 903 octets transférés</li>
</ul>
<p style="">Soit une diminution de 38 ko (-76%) à transférer sur le réseau ! C&#8217;est pas mal comme optimisation ? Et en plus c&#8217;est transparent pour tout le monde.</p>
<p style="">Ainsi, avec l&#8217;activation de la compression, les bons temps de réponses de son application ne seront pas masqués par les temps de transferts réseaux importants, et l&#8217;utilisateur au bout trouvera l&#8217;application rapide.</p>
<p style=""><strong>[Quelques pointeurs]</strong></p>
<ul>
<li><a title="Apache mod_deflate" href="http://httpd.apache.org/docs/2.2/mod/mod_deflate.html" target="_blank">Apache &#8211; module mod_deflate</a></li>
<li><a href="http://en.wikipedia.org/wiki/HTTP_compression" target="_blank">Wiki : la compression HTTP</a></li>
<li><a href="http://www.http-compression.com/" target="_blank">La compression HTTP par son inventeur</a></li>
</ul>
<p style="">./</p>
<p style="">
]]></content:encoded>
			<wfw:commentRss>http://blog.milamberspace.net/index.php/2008/07/06/compression-http-ou-comment-reduire-le-temps-reseau-dans-les-performances-dune-application-80.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
