summaryrefslogtreecommitdiffstats
path: root/docs/manual/howto/http2.html.fr
blob: fb9b26ba0f5a67fd116cea861927d6023981ee11 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Guide HTTP/2 - Serveur Apache HTTP Version 2.5</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
<script src="../style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="../images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
<p class="apache">Serveur Apache HTTP Version 2.5</p>
<img alt="" src="../images/feather.png" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">How-To / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Guide HTTP/2</h1>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/howto/http2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/howto/http2.html" hreflang="es" rel="alternate" title="Espa�ol">&nbsp;es&nbsp;</a> |
<a href="../fr/howto/http2.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
</div>

    <p>Ce document est le guide de l'utilisateur de l'impl�mentation de HTTP/2
    dans Apache httpd. Cette fonctionnalit� en est au stade
    <em>exp�rimental</em>, et des modifications sont � pr�voir dans
    les interfaces et les directives avec les changements de versions.
    </p>
  </div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#protocol">Le protocole HTTP/2</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#implementation">HTTP/2 dans Apache httpd</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#building">Compilation de httpd avec le support de HTTP/2</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#basic-config">Configuration de base</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mpm-config">Configuration du MPM</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#clients">Clients</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#tools">Outils efficaces pour d�boguer HTTP/2</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#push">Push serveur</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../mod/mod_http2.html">mod_http2</a></li><li><a href="#comments_section">Commentaires</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="protocol" id="protocol">Le protocole HTTP/2</a></h2>
    
    <p>HTTP/2 est une �volution du protocole de la couche application le plus
    utilis� au monde, HTTP. Cette �volution permet en particulier une utilisation
    plus efficace des ressources r�seau. Il ne modifie pas les aspects
    fondamentaux de HTTP (sa s�mantique). Entre autres, il y a toujours des
    requ�tes, des r�ponses et des en-t�tes. Par cons�quent, si vous connaissez
    HTTP/1, vous connaissez d�j� 95% de HTTP/2.</p>
    <p>Beaucoup a d�j� �t� �crit � propos de HTTP/2 et de son fonctionnement. La
    documentation la plus officielle est bien entendu sa <a href="https://tools.ietf.org/html/rfc7540">RFC 7540</a> (ou <a href="http://httpwg.org/specs/rfc7540.html">cette version au format plus
    lisible</a>). Vous trouverez ici une description des rouages de HTTP/2 dans
    leurs moindres d�tails.</p>
    <p>Le premier document � lire lorsqu'on ne conna�t pas un m�canisme n'est
    cependant pas sa RFC. Il est pr�f�rable de comprendre tout d'abord <em>ce
    que</em> ce m�canisme est cens� faire, et seulement ensuite de lire sa RFC
    pour comprendre <em>comment</em> il fonctionne. <a href="https://daniel.haxx.se/http2/">http2  explained</a> de Daniel Stenberg
    (l'auteur de <a href="https://curl.haxx.se">curl</a>)
    est un bien meilleur document pour d�marrer l'�tude de HTTP/2. En outre, de
    nouveaux langages s'ajoutent r�guli�rement � sa liste de traductions
    disponibles !</p>
    <p>Si vous n'avez pas envie de le lire parce que vous le trouvez trop long,
    voici certains pi�ges � �viter et nouveaux termes � conna�tre avant de lire
    ce document :</p>
    <ul>
        <li>A la diff�rence de HTTP/1 qui est en texte pur, HTTP/2 est un
	<strong>protocole binaire</strong>, et alors que le premier est lisible par
	un humain (par exemple pour sniffer le trafic r�seau), le second ne
	l'est pas. Voir la <a href="https://http2.github.io/faq/#why-is-http2-binary">FAQ
	officielle</a> pour plus de d�tails.</li>
        <li><strong>h2</strong> correspond � HTTP/2 sur TLS (n�gociation de
	protocole via ALPN).</li>
        <li><strong>h2c</strong> correspond � HTTP/2 sur TCP.</li>
	<li>Une <strong>frame</strong> ou trame est la plus petite unit� de
	communication au sein d'une connexion HTTP/2 et comporte une en-t�te et
	une s�quence d'octets de longueur variable dont la structure correspond
	au type de trame. Voir la <a href="http://httpwg.org/specs/rfc7540.html#FramingLayer">section
	correspondante</a> de la documentation officielle pour plus de
	d�tails.</li>
        <li>Un <strong>stream</strong> est un flux bidirectionnel de frames au
	sein d'une connexion HTTP/2. La notion correspondante dans HTTP/1 est un
	�change de messages de type requ�te et r�ponse. Voir la <a href="http://httpwg.org/specs/rfc7540.html#StreamsLayer">section
	correspondante</a> de la documentation officielle pour plus de d�tails.</li>
        <li>HTTP/2 peut g�rer <strong>plusieurs streams</strong> de donn�es sur
	la m�me connexion TCP, ce qui permet d'�viter le point de blocage
	classique de HTTP/1 pour les requ�tes lentes, et de ne pas avoir �
	ouvrir de nouvelles connexions TCP pour chaque requ�te/r�ponse (les
	connexions persistantes ou KeepAlive avaient contourn� le probl�me dans
	HTTP/1 mais ne l'avaient pas enti�rement r�solu)</li>
    </ul>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="implementation" id="implementation">HTTP/2 dans Apache httpd</a></h2>
    
    <p>Le protocole HTTP/2 est impl�ment� dans Apache httpd via un module
    propre, pertinemment nomm� <a href="../mod/mod_http2.html">mod_http2</a>. Ce
    module impl�mente toutes les fonctionnalit�s d�crites par la RFC 7540 et
    supporte les connexions en texte pur (http:), ou s�curis�es (https:).
    La variante texte pur se nomme '<code>h2c</code>', et la variante s�curis�e
    '<code>h2</code>'. <code>h2c</code> peut �tre en mode <em>direct</em> ou
    <code>Upgrade:</code> via une requ�te initiale en HTTP/1.</p>
    <p><a href="#push">Server Push</a> est une nouvelle fonctionnalit� offerte
    aux d�veloppeurs web par HTTP/2. La section correspondante de ce document
    vous indiquera comment votre application peut en tirer parti.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="building" id="building">Compilation de httpd avec le support de HTTP/2</a></h2>
    
    <p><a href="../mod/mod_http2.html">mod_http2</a> se base sur la biblioth�que
    de <a href="https://nghttp2.org">nghttp2</a> pour son impl�mentation. Pour
    pouvoir compiler <code>mod_http2</code>, <code>libnghttp2</code> version
    1.2.1. ou sup�rieure doit �tre install�e dans votre syst�me.</p>
    <p>Pour d�clencher la compilation de <code>mod_http2</code>, vous devez
    ajouter l'argument '<code>--enable-http2</code>' au script
    <code>./configure</code> que vous ex�cutez � la racine de l'arborescence des
    sources de httpd. Si <code>libnghttp2</code> est install�e dans un
    r�pertoire non connu du chemin de vos biblioth�ques, vous devez indiquer ce
    r�pertoire au script <code>./configure</code> via l'argument
    '<code>--with-nghttp2=&lt;path&gt;</code>'.</p>
    <p>Alors que cette m�thode de compilation conviendra � la plupart, certains
    pr�f�reront lier statiquement <code>nghttp2</code> � ce module. Pour ce
    faire, utilisez l'argument <code>--enable-nghttp2-staticlib-deps</code>.
    Cette m�thode est pratiquement la m�me que celle utilis�e pour lier
    statiquement openssl � mod_ssl.</p>
    <p>En parlant de SSL, vous devez savoir que la plupart des navigateurs ne
    communiqueront en HTTP/2 que sur des URLs s�curis�es de type
    <code>https:</code> ; votre serveur doit donc supporter SSL. Mais de plus,
    votre biblioth�que SSL devra supporter l'extension <code>ALPN</code>. Enfin,
    si la biblioth�que que vous utilisez est OpenSSL, sa version devra �tre
    1.0.2. ou sup�rieure.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="basic-config" id="basic-config">Configuration de base</a></h2>
    

    <p>Maintenant que vous disposez d'un binaire <code>httpd</code> compil� avec le
    module <code>mod_http2</code>, l'activation de ce dernier n�cessite un
    minimum de configuration suppl�mentaire. En premier lieu, comme pour tout
    module Apache, vous devez le charger :</p>
    <pre class="prettyprint lang-config">LoadModule http2_module modules/mod_http2.so</pre>


    <p>La seconde directive que vous devez ajouter � votre fichier de
    configuration est</p>
    <pre class="prettyprint lang-config">Protocols h2 http/1.1</pre>

    <p>Ceci permet de d�finir h2, la variante s�curis�e, comme le protocole
    pr�f�r� pour les connexions � votre serveur. Si vous souhaitez que toutes les
    variantes soient disponibles, utilisez la directive suivante :</p>
    <pre class="prettyprint lang-config">Protocols h2 h2c http/1.1</pre>

    <p>Selon l'endroit o� vous placez cette directive, elle affectera l'ensemble
    de votre serveur, ou seulement un ou plusieurs serveurs virtuels. Vous
    pouvez aussi l'imbriquer comme dans l'exemple suivant :</p>
    <pre class="prettyprint lang-config">Protocols http/1.1
&lt;VirtualHost ...&gt;
    ServerName test.example.org
    Protocols h2 http/1.1
&lt;/VirtualHost&gt;</pre>


    <p>Seules les connexions en HTTP/1 seront alors permises, sauf pour le serveur
    virtuel <code>test.example.org</code> qui acceptera aussi les connexions SSL
    en HTTP/2.</p>
    <div class="note"><h3>Utilisez une cha�ne d'algorithmes de chiffrement forte</h3>
    <p>La directive <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> doit
    �tre d�finie avec une cha�ne d'algorithmes de chiffrement TLS forte. M�me si
    la version actuelle de mod_http2 n'impose pas d'algorithmes de chiffrement
    particuliers, la plupart des clients le font. Faire pointer un navigateur
    vers un serveur o� <code>h2</code> est activ� avec une cha�ne d'algorithmes
    de chiffrement inappropri�e entra�nera un rejet et une retrogradation vers
    HTTP 1.1. C'est une erreur que l'on fait couramment lorsqu'on configure
    httpd pour HTTP/2 pour la premi�re fois ; donc gardez la � l'esprit si vous
    voulez �viter de longues sessions de d�bogage ! Si vous voulez �tre s�r de
    d�finir une cha�ne d'algorithmes de chiffrement appropri�e, �vitez ceux qui
    sont list�s dans la <a href="http://httpwg.org/specs/rfc7540.html#BadCipherSuites">blacklist TLS HTTP/2
    </a>.</p>
    </div>
    <p>L'ordre des protocoles indiqu�s est aussi important. Par d�faut, le
    premier sera le protocole pr�f�r�. Lorsqu'un client offre plusieurs choix,
    c'est le plus � gauche qui sera s�lectionn�. Dans</p>
    <pre class="prettyprint lang-config">Protocols http/1.1 h2</pre>

    <p>le protocole pr�f�r� sera HTTP/1 et il sera toujours s�lectionn� sauf si
    un client ne supporte <em>que</em> h2. Comme nous souhaitons communiquer en
    HTTP/2 avec les clients qui le supportent, la meilleure d�finition de la
    directive est</p>
    <pre class="prettyprint lang-config">Protocols h2 h2c http/1.1</pre>


    <p>Toujours � propos de l'ordre des protocoles, le client a lui aussi ses
    propres pr�f�rences en la mati�re. � ce titre, si vous le souhaitez, vous
    pouvez configurer votre serveur pour qu'il s�lectionne non plus son
    protocole pr�f�r�, mais au contraire le protocole pr�f�r�
    du client :</p>
    <pre class="prettyprint lang-config">ProtocolsHonorOrder Off</pre>

    <p>Avec cette directive, l'ordre des protocoles que <em>vous</em> avez
    d�fini devient caduque et seul l'ordre d�fini par le client sera pris en
    compte.</p>
    <p>Une derni�re chose : les protocoles que vous d�finissez ne sont pas v�rifi�s
    quant � leurs validit� ou orthographe. Vous pouvez tr�s bien d�finir des
    protocoles qui n'existent pas, et il n'est donc pas n�cessaire de filtrer
    les <code>Protocoles</code> avec des v�rifications de type
    <code>IfModule</code>.</p>
    <p>Pour des conseils plus avanc�s � propos de la configuration, voir la <a href="../mod/mod_http2.html">Documentation de mod_http2</a>, et en particulier
    la section � propos de la <a href="../mod/mod_http2.html#dimensioning">consommation suppl�mentaire de
    ressources</a>, ainsi que la section expliquant comment g�rer les <a href="../mod/mod_http2.html#misdirected">serveurs multiples avec certificat
    commun</a>.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="mpm-config" id="mpm-config">Configuration du MPM</a></h2>
    

    <p>Tous les modules multiprocessus (MPM) fournis avec httpd supportent
    HTTP/2. Cependant, si vous utilisez le MPM <code>prefork</code>, vous allez
    faire face � de s�v�res restrictions.</p>
    <p>Avec le MPM <code>prefork</code>, <code>mod_http2</code> ne traitera
    qu'une requ�te � la fois par connexion alors que les clients tels que les
    navigateurs internet envoient de nombreuses requ�tes au m�me moment. Si
    l'une d'entre elles est longue � traiter (ou implique une longue
    interrogation), les autres requ�tes seront mises en attente.</p>
    <p>Par d�faut, <code>mod_http2</code> ne passe pas outre cette limitation pour
    la simple et bonne raison que le MPM <code>prefork</code> n'est aujourd'hui
    choisi que si vous ex�cutez des moteurs de traitement qui ne sont pas pr�par�s
    pour le multithreading (par exemple qui se crashent lorsque plusieurs
    requ�tes arrivent).</p>
    <p>Si votre plateforme et votre installation de httpd le supportent, la
    meilleur solution consiste actuellement � utiliser le MPM
    <code>event</code>.
    </p>
    <p>Si vous n'avez pas d'autre choix que d'utiliser le MPM
    <code>prefork</code>, mais souhaitez tout de m�me traiter plusieurs requ�tes
    simultan�ment, vous pouvez jouer avec la directive <code class="directive"><a href="../mod/mod_http2.html#h2minworkers">H2MinWorkers</a></code>, sans garantie que cela
    fonctionne.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="clients" id="clients">Clients</a></h2>
    
    <p>La plupart des navigateurs modernes supportent HTTP/2, mais seulement sur
    des connexions SSL : Firefox v43, Chrome v45, Safari v9, iOS Safari v9,
    Opera v35, Chrome pour Android v49 et
    Internet Explorer v11 sous Windows10 (selon cette <a href="http://caniuse.com/#search=http2">source</a>).</p>
    <p>D'autres clients et serveurs sont list�s dans le <a href="https://github.com/http2/http2-spec/wiki/Implementations">wiki des
    impl�mentations</a> ; entre autres des impl�mentations pour c, c++, common
    lisp, dart, erlang, haskell, java, nodejs, php, python, perl, ruby, rust,
    scala et swift.</p>
    <p>De nombreuses impl�mentations clientes autres que les navigateurs
    supportent HTTP/2 en texte pur, h2c. L'une des plus efficaces d'entre elles
    est <a href="https://curl.haxx.se">curl</a>.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="tools" id="tools">Outils efficaces pour d�boguer HTTP/2</a></h2>
    
    <p>Le premier d'entre eux est bien entendu <a href="https://curl.haxx.se">curl</a>. Assurez-vous au pr�alable que votre
    version supporte HTTP/2 en v�rifiant ses <code>Fonctionnalit�s</code> :</p>
    <pre class="prettyprint lang-config">    $ curl -V
    curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 [...]
    Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP <strong>HTTP2</strong>
    </pre>

    <div class="note"><h3>homebrew sous Mac OS :</h3>
    brew install curl --with-openssl --with-nghttp2
    </div>
    <p>Pour une inspection en profondeur : <a href="https://wiki.wireshark.org/HTTP2">wireshark</a>.</p>
    <p>Le paquet <a href="https://nghttp2.org">nghttp2</a> inclut aussi des
    outils comme :</p>
    <ul>
        <li><a href="https://nghttp2.org/documentation/nghttp.1.html">nghttp</a>
	- permet de visualiser les trames HTTP/2 et ainsi de se faire une meilleure
	  id�e du protocole.</li>
        <li><a href="https://nghttp2.org/documentation/h2load-howto.html">h2load</a> -
	permet de tester votre serveur dans des conditions extremes.</li>
    </ul>
    <p>Chrome fournit des journaux d�taill�s des connexions HTTP/2 via la page
    <a href="chrome://net-internals/#http2">special net-internals page</a>. Il y
    a aussi cette extension int�ressante pour <a href="https://chrome.google.com/webstore/detail/http2-and-spdy-indicator/mpbpobfflnpcgagjijhmgnchggcjblin?hl=en">Chrome</a>
    et <a href="https://addons.mozilla.org/en-us/firefox/addon/spdy-indicator/">Firefox</a>
    qui permet d'indiquer que votre navigateur utilise HTTP/2.</p>
  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="push" id="push">Push serveur</a></h2>
    
    <p>Le protocole HTTP/2 permet au serveur de proposer (PUSH) des r�ponses
    pour lesquelles le client n'a rien demand�. La communication autour de ces
    r�ponses est du style : "voici une requ�te que vous n'avez jamais
    envoy�e, et la r�ponse vous parviendra bient�t tout de m�me ..."</p>
    <p>Il y a cependant des conditions : le client peut d�sactiver cette
    fonctionnalit� et le serveur ne pourra alors lui proposer des r�ponses que
    pour les requ�tes qu'il a effectivement envoy�es.</p>
    <p>Cette fonctionnalit� a pour but de permettre au serveur d'envoyer au
    client des ressources dont il va probablement avoir besoin : par exemple une
    ressource css ou javascript appartenant � une page html que le client a
    demand�e, un jeu d'images r�f�renc� par un css, etc...</p>
    <p>Cette anticipation a pour avantage de permettre au client d'�conomiser le
    temps qu'il lui aurait fallu pour envoyer une requ�te, quelques
    millisecondes � une demi-seconde en fonction de l'�loignement du serveur.
    Elle a cependant pour inconv�nient d'imposer au client le t�l�chargement de
    ressources qu'il poss�de peut-�tre d�j� dans son cache. Bien entendu, HTTP/2
    permet d'annuler pr�matur�ment de telles requ�tes, mais des ressources sont
    tout de m�me gaspill�es.</p>
    <p>En r�sum� : il n'existe pas encore de strat�gie efficace pour faire le
    meilleur usage de cette fonctionnalit� de HTTP/2 et tout le monde en est
    encore au stade de l'exp�rimentation. � ce titre, voici des conseils pour
    proc�der vous-m�me � ces exp�rimentations :</p>
    <p><code>mod_http2</code> inspecte l'en-t�te de la r�ponse et recherche les
    en-t�tes <code>Link</code> sous un certain format :</p>
    <pre class="prettyprint lang-config">Link &lt;/xxx.css&gt;;rel=preload, &lt;/xxx.js&gt;; rel=preload</pre>

    <p>Si la connexion supporte PUSH, ces deux ressources seront envoy�es au
    client. En tant que d�veloppeur web vous pouvez d�finir ces en-t�tes soit
    directement au niveau de la r�ponse de votre application, soit en
    configurant votre serveur via</p>
    <pre class="prettyprint lang-config">&lt;Location /xxx.html&gt;
    Header add Link "&lt;/xxx.css&gt;;rel=preload"
    Header add Link "&lt;/xxx.js&gt;;rel=preload"
&lt;/Location&gt;</pre>

    <p>Si vous souhaitez utiliser des liens <code>preload</code> sans d�clencher
    de PUSH, vous pouvez utiliser le param�tre <code>nopush</code> comme suit :</p>
    <pre class="prettyprint lang-config">Link &lt;/xxx.css&gt;;rel=preload;nopush</pre>

    <p>Vous pouvez aussi d�sactiver les PUSHes pour l'ensemble de votre
    serveur via la directive</p>
    <pre class="prettyprint lang-config">H2Push Off</pre>

    <p>� savoir aussi :</p>
    <p>Le module maintient un journal des ressources ayant fait l'objet d'un
    PUSH pour chaque connexion (en g�n�ral des condens�s hash des URLs), et
    n'effectuera pas deux fois un PUSH pour la m�me ressource. Cependant,
    lorsque la connexion est ferm�e, le journal de ses PUSHes est supprim�.</p>
    <p>Certains d�veloppeurs planchent sur la mani�re de permettre au client
    d'informer le serveur des ressources qu'il poss�de d�j� dans son cache afin
    d'�viter les PUSHes pour ces derni�res, mais ceci n'en est actuellement qu'�
    un stade tr�s exp�rimental.</p>
    <p>L'<a href="https://tools.ietf.org/html/draft-ruellan-http-accept-push-policy-00">
    en-t�te Accept-Push-Policy</a> est un autre dispositif exp�rimental
    impl�ment� dans <code>mod_http2</code> ; il permet au client de d�finir pour
    chaque requ�te quels genres de PUSHes il accepte.</p>
  </div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/howto/http2.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../es/howto/http2.html" hreflang="es" rel="alternate" title="Espa�ol">&nbsp;es&nbsp;</a> |
<a href="../fr/howto/http2.html" title="Fran�ais">&nbsp;fr&nbsp;</a></p>
</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Commentaires</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/http2.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else {
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2018 The Apache Software Foundation.<br />Autoris� sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>