HTTP/2 est la nouvelle et dernière version du protocole de transfert hypertexte, ou hypertext transfer protocol en anglais. Sa spécification a été publiée en mai 2015 dans la RFC 7540, dix-huit ans après celle d’HTTP/1.1!
Le développement d’HTTP/2 a débuté en mars 2012. Le groupe httpbis de l’IETF, Détachement d’ingénierie d’Internet, a développé cette version en s’appuyant sur le protocole SPDY de Google. La conception d’HTTP/2 a d’ailleurs motivé l’entreprise américaine à mettre fin à SPDY.
Les grands axes de développement d’HTTP/2
Deux axes de développement majeurs ont été définis pour HTTP/2 : rendre les échanges plus sûrs et diminuer le temps de latence, et donc in fine le temps de chargement des pages internet. Ces deux objectifs répondent à deux enjeux cruciaux.
Les sites internet se doivent de présenter des temps de chargement réduits au maximum. 40% des internautes quittent une boutique en ligne si la page n’est pas affichée en moins de 3 secondes. La problématique du temps de chargement est d’autant plus importante et complexe qu’aujourd’hui les sites sont de plus en plus consultés à partir d’appareils mobiles aux connexions souvent peu performantes.
La sécurisation des échanges n’est plus quant à elle une problématique réservée aux seules boutiques en ligne. La prise de conscience générale de l’importance des données personnelles fait de la sécurisation des échanges, et aussi des données, un élément central dans la conception et le déploiement d’un site internet et plus généralement d’un service dans le cloud. Si le cryptage des échanges pouvait paraître superflu pour de nombreux sites, cela est en train de changer en ce début d’année 2017. Le navigateur Chrome affiche désormais dans sa barre d’adresse un message signalant que le site consulté n’est pas sécurisé. Cette mention, peu rassurante pour l’internaute, devrait faire adopter par de nombreux sites le chiffrement des échanges avec SSL, ou plus exactement avec TLS.
Avec HTTP/2, un internet plus rapide
Avant de présenter les nouvelles fonctionnalités apportées par HTTP/2, il est important de noter que cette version est compatible avec HTTP/1.1. La mise en place d’un serveur web implémentant HTTP/2 sera donc imperceptible pour les visiteurs utilisant un navigateur « HTTP/1.1 ».
- L’affichage d’une page avec HTTP/1.1 demande aux navigateurs d’effectuer une requête par ressource. Cette multiplication des échanges ralentit considérablement le temps de chargement d’une page. HTTP/2 résout ce problème avec le multiplexage: le navigateur peut télécharger avec une seule requête toutes les ressources nécessaires à l’affichage de la page.
- De plus, HTTP/2 permet de réduire le volume de données échangé avec la compression des en-têtes HTTP.
- La nouvelle version d’HTTP est également plus fiable. La transmission des données en binaire est source de moins d’erreurs que la transmission en mode texte de la version 1.1.
- Le protocole offre la chance aux sites internet d’être « intelligents ». Le mécanisme appelé HTTP/2 Server Push permet d’attacher des ressources aux requêtes. En « préchargeant » des fichiers non sollicitées par le navigateur, les internautes découvriront sans nul doute dans les prochains mois des sites de plus en plus réactifs.
HTTP/2 va rendre internet plus sûr
Le protocole HTTP/2 peut être utilisé avec ou sans chiffrement TLS. Cependant, les navigateurs web les plus populaires comme Firefox, Chrome, Safari, Opera, Internet Explorer et Edge ont décidé d’implémenter uniquement la version d’HTTP/2 avec chiffrement. Les sites internet se voient donc contraints d’utiliser la version avec TLS du protocole et par conséquent d’installer un certificat SSL. Les sites disposant de moyens limités pourront se tourner vers Let’s Encrypt, qui propose des certificats gratuits. Le certificat de Let’s Encrypt est d’ailleurs installé par défaut sur tous les hébergements cPanel d’Amen.fr.
Passage au HTTP/2
Si vous disposez d’un serveur dédié, HTTP/2 peut être mis en action très simplement. La mise à jour du serveur web puis l’activation d’HTTP/2 – généralement via la configuration – sont les seules actions à entreprendre. Les versions récentes d’Apache, d’Nginx et de Microsoft IIS, qui représentent un peu plus de 90% des serveurs web de la planète, sont compatibles avec le protocole HTTP/2 depuis plusieurs mois.
Si vous utilisez par exemple Apache, il vous faudra disposer d’au minimum de la version 2.4.12. Une fois Apache à jour, l’implémentation d’HTTP/2 se résume à l’activation du module mod_http2 avec la commande « a2enmod http2 ». Ensuite, il faut tout aussi simplement ajouter dans la définition du virtual host du site internet la ligne « Protocols h2 http/1.1 ». Il est même possible avec Apache d’activer globalement le protocole.
Cette configuration doit être précédée de la mise en place d’un certificat SSL et de la configuration d’Apache pour des échanges chiffrés. Ce cryptage peut être implémenté très simplement et gratuitement en utilisant un certificat SSL. Ce service propose même des scripts se chargeant à la fois de l’installation du certificat et de la configuration d’Apache ou de Nginx.
L’optimisation d’un site internet va changer
HTTP/2 va changer les habitudes en terme d’optimisation des performances d’un site web. Le multiplexage rend obsolète par exemple la concaténation des fichiers javascript et des feuilles de style.
Si le multiplexage signe la fin d’une partie du travail d’optimisation tel que l’on connaît aujourd’hui, certaines règles seront toujours à mettre en oeuvre. Par exemple, les règles de mise en cache des ressources ne doivent pas être abandonnées. HTTP/2 conserve en effet les en-têtes transmis avec les fichiers.
De plus, le multiplexage n’est pas la réponse magique à toutes les problématiques. Par exemple, la combinaison des images du design en une seule image appelée « sprite » va perdurer. La création d’une seule image n’offre en effet pas seulement une diminution du nombre de requêtes mais aussi un meilleure compression et donc in fine un gain de poids.
Enfin, l’optimisation avec HTTP/2 ne sera pas plus simple et moins longue à réaliser. L’attachement de fichiers aux requêtes avec HTTP/2 Server Push devra être effectuée avec prudence. Les ressources du serveur et du client pourraient en effet être sollicitées inutilement.