1
0
mirror of https://github.com/apache/httpd.git synced 2025-07-30 20:03:10 +03:00
Files
apache/docs/manual/howto/http2.html.fr
Lucien Gentis 59da976ab8 Rebuild.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1781684 13f79535-47bb-0310-9956-ffa450edef68
2017-02-04 15:40:48 +00:00

376 lines
25 KiB
Plaintext
Raw Blame History

<?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<70>ol">&nbsp;es&nbsp;</a> |
<a href="../fr/howto/http2.html" title="Fran<61>ais">&nbsp;fr&nbsp;</a></p>
</div>
<p>Ce document est le guide de l'utilisateur de l'impl<70>mentation de HTTP/2
dans Apache httpd. Cette fonctionnalit<69> en est au stade
<em>exp<78>rimental</em>, et des modifications sont <20> pr<70>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 <20>volution du protocole de la couche application le plus
utilis<69> au monde, HTTP. Cette <20>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<71>tes, des r<>ponses et des en-t<>tes. Par cons<6E>quent, si vous connaissez
HTTP/1, vous connaissez d<>j<EFBFBD> 95% de HTTP/2.</p>
<p>Beaucoup a d<>j<EFBFBD> <20>t<EFBFBD> <20>crit <20> 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 <20> lire lorsqu'on ne conna<6E>t pas un m<>canisme n'est
cependant pas sa RFC. Il est pr<70>f<EFBFBD>rable de comprendre tout d'abord <em>ce
que</em> ce m<>canisme est cens<6E> 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'<27>tude de HTTP/2. En outre, de
nouveaux langages s'ajoutent r<>guli<6C>rement <20> 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<70>ges <20> <20>viter et nouveaux termes <20> conna<6E>tre avant de lire
ce document :</p>
<ul>
<li>A la diff<66>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 <20> HTTP/2 sur TLS (n<>gociation de
protocole via ALPN).</li>
<li><strong>h2c</strong> correspond <20> HTTP/2 sur TCP.</li>
<li>Une <strong>frame</strong> ou trame est la plus petite unit<69> 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
<09>change de messages de type requ<71>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<6E>es sur
la m<>me connexion TCP, ce qui permet d'<27>viter le point de blocage
classique de HTTP/1 pour les requ<71>tes lentes, et de ne pas avoir <20>
ouvrir de nouvelles connexions TCP pour chaque requ<71>te/r<>ponse (les
connexions persistantes ou KeepAlive avaient contourn<72> le probl<62>me dans
HTTP/1 mais ne l'avaient pas enti<74>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<70>ment<6E> dans Apache httpd via un module
propre, pertinemment nomm<6D> <a href="../mod/mod_http2.html">mod_http2</a>. Ce
module impl<70>mente toutes les fonctionnalit<69>s d<>crites par la RFC 7540 et
supporte les connexions en texte pur (http:), ou s<>curis<69>es (https:).
La variante texte pur se nomme '<code>h2c</code>', et la variante s<>curis<69>e
'<code>h2</code>'. <code>h2c</code> peut <20>tre en mode <em>direct</em> ou
<code>Upgrade:</code> via une requ<71>te initiale en HTTP/1.</p>
<p><a href="#push">Server Push</a> est une nouvelle fonctionnalit<69> 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<74>que
de <a href="https://nghttp2.org">nghttp2</a> pour son impl<70>mentation. Pour
pouvoir compiler <code>mod_http2</code>, <code>libnghttp2</code> version
1.2.1. ou sup<75>rieure doit <20>tre install<6C>e dans votre syst<73>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<65>cutez <20> la racine de l'arborescence des
sources de httpd. Si <code>libnghttp2</code> est install<6C>e dans un
r<>pertoire non connu du chemin de vos biblioth<74>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 <20> la plupart, certains
pr<70>f<EFBFBD>reront lier statiquement <code>nghttp2</code> <20> 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<69>e pour lier
statiquement openssl <20> 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<69>es de type
<code>https:</code> ; votre serveur doit donc supporter SSL. Mais de plus,
votre biblioth<74>que SSL devra supporter l'extension <code>ALPN</code>. Enfin,
si la biblioth<74>que que vous utilisez est OpenSSL, sa version devra <20>tre
1.0.2. ou sup<75>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<69> avec le
module <code>mod_http2</code>, l'activation de ce dernier n<>cessite un
minimum de configuration suppl<70>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 <20> 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<69>e, comme le protocole
pr<70>f<EFBFBD>r<EFBFBD> pour les connexions <20> 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<68>ne d'algorithmes de chiffrement forte</h3>
<p>La directive <code class="directive"><a href="../mod/mod_ssl.html#sslciphersuite">SSLCipherSuite</a></code> doit
<20>tre d<>finie avec une cha<68>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<69> avec une cha<68>ne d'algorithmes
de chiffrement inappropri<72>e entra<72>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<6D>re fois ; donc gardez la <20> l'esprit si vous
voulez <20>viter de longues sessions de d<>bogage ! Si vous voulez <20>tre s<>r de
d<>finir une cha<68>ne d'algorithmes de chiffrement appropri<72>e, <20>vitez ceux qui
sont list<73>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<71>s est aussi important. Par d<>faut, le
premier sera le protocole pr<70>f<EFBFBD>r<EFBFBD>. Lorsqu'un client offre plusieurs choix,
c'est le plus <20> gauche qui sera s<>lectionn<6E>. Dans</p>
<pre class="prettyprint lang-config">Protocols http/1.1 h2</pre>
<p>le protocole pr<70>f<EFBFBD>r<EFBFBD> sera HTTP/1 et il sera toujours s<>lectionn<6E> 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 <20> propos de l'ordre des protocoles, le client a lui aussi ses
propres pr<70>f<EFBFBD>rences en la mati<74>re. <20> ce titre, si vous le souhaitez, vous
pouvez configurer votre serveur pour qu'il s<>lectionne non plus son
protocole pr<70>f<EFBFBD>r<EFBFBD>, mais au contraire le protocole pr<70>f<EFBFBD>r<EFBFBD>
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<6E>re chose : les protocoles que vous d<>finissez ne sont pas v<>rifi<66>s
quant <20> leurs validit<69> ou orthographe. Vous pouvez tr<74>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<6E>s <20> propos de la configuration, voir la <a href="../mod/mod_http2.html">Documentation de mod_http2</a>, et en particulier
la section <20> propos de la <a href="../mod/mod_http2.html#dimensioning">consommation suppl<70>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 <20> de s<>v<EFBFBD>res restrictions.</p>
<p>Avec le MPM <code>prefork</code>, <code>mod_http2</code> ne traitera
qu'une requ<71>te <20> la fois par connexion alors que les clients tels que les
navigateurs internet envoient de nombreuses requ<71>tes au m<>me moment. Si
l'une d'entre elles est longue <20> traiter (ou implique une longue
interrogation), les autres requ<71>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<65>cutez des moteurs de traitement qui ne sont pas pr<70>par<61>s
pour le multithreading (par exemple qui se crashent lorsque plusieurs
requ<71>tes arrivent).</p>
<p>Si votre plateforme et votre installation de httpd le supportent, la
meilleur solution consiste actuellement <20> 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<71>tes
simultan<61>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<73>s dans le <a href="https://github.com/http2/http2-spec/wiki/Implementations">wiki des
impl<70>mentations</a> ; entre autres des impl<70>mentations pour c, c++, common
lisp, dart, erlang, haskell, java, nodejs, php, python, perl, ruby, rust,
scala et swift.</p>
<p>De nombreuses impl<70>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<70>alable que votre
version supporte HTTP/2 en v<>rifiant ses <code>Fonctionnalit<69>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<69>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<6C>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<6E>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<6E>. La communication autour de ces
r<>ponses est du style : "voici une requ<71>te que vous n'avez jamais
envoy<6F>e, et la r<>ponse vous parviendra bient<6E>t tout de m<>me ..."</p>
<p>Il y a cependant des conditions : le client peut d<>sactiver cette
fonctionnalit<69> et le serveur ne pourra alors lui proposer des r<>ponses que
pour les requ<71>tes qu'il a effectivement envoy<6F>es.</p>
<p>Cette fonctionnalit<69> 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 <20> une page html que le client a
demand<6E>e, un jeu d'images r<>f<EFBFBD>renc<6E> par un css, etc...</p>
<p>Cette anticipation a pour avantage de permettre au client d'<27>conomiser le
temps qu'il lui aurait fallu pour envoyer une requ<71>te, quelques
millisecondes <20> une demi-seconde en fonction de l'<27>loignement du serveur.
Elle a cependant pour inconv<6E>nient d'imposer au client le t<>l<EFBFBD>chargement de
ressources qu'il poss<73>de peut-<2D>tre d<>j<EFBFBD> dans son cache. Bien entendu, HTTP/2
permet d'annuler pr<70>matur<75>ment de telles requ<71>tes, mais des ressources sont
tout de m<>me gaspill<6C>es.</p>
<p>En r<>sum<75> : il n'existe pas encore de strat<61>gie efficace pour faire le
meilleur usage de cette fonctionnalit<69> de HTTP/2 et tout le monde en est
encore au stade de l'exp<78>rimentation. <20> ce titre, voici des conseils pour
proc<6F>der vous-m<>me <20> ces exp<78>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<6F>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<61>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><3E> savoir aussi :</p>
<p>Le module maintient un journal des ressources ayant fait l'objet d'un
PUSH pour chaque connexion (en g<>n<EFBFBD>ral des condens<6E>s hash des URLs), et
n'effectuera pas deux fois un PUSH pour la m<>me ressource. Cependant,
lorsque la connexion est ferm<72>e, le journal de ses PUSHes est supprim<69>.</p>
<p>Certains d<>veloppeurs planchent sur la mani<6E>re de permettre au client
d'informer le serveur des ressources qu'il poss<73>de d<>j<EFBFBD> dans son cache afin
d'<27>viter les PUSHes pour ces derni<6E>res, mais ceci n'en est actuellement qu'<27>
un stade tr<74>s exp<78>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<78>rimental
impl<70>ment<6E> dans <code>mod_http2</code> ; il permet au client de d<>finir pour
chaque requ<71>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<70>ol">&nbsp;es&nbsp;</a> |
<a href="../fr/howto/http2.html" title="Fran<61>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 2017 The Apache Software Foundation.<br />Autoris<69> 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>