Aller au contenu principal

BigPipe

Publié par Stéphane Arrami le sam 23/02/2019

BigPipe est une refonte du système de cache des pages Web dynamiques. L'idée générale est de décomposer les pages Web en petits blocs appelés pagelets, et de les faire passer par plusieurs étapes d'exécution à l'intérieur des serveurs et des navigateurs Web.

LinkedIn et Facebook utilisent BigPipe pour charger du contenu. C'est d'abord la structure de la page en morceaux et les éléments difficiles à charger qui viennent par la suite.

Il semble que Facebook se charge très rapidement, alors qu'il faut bien 5 à 6 secondes pour que tout se charge. Ce qui se passe, c'est qu'il charge d'abord les parties non modifiables et ensuite les parties personnalisées, comme la liste d'amis, les groupes, les pages, etc.

Tout comme un microprocesseur pipeliniste divise le cycle de vie d'une instruction en plusieurs étapes (telles que "instruction fetch","instruction decode","execution","register write back" etc.).

Cette technologie de "streaming des contenus" est disponible dans Drupal 8. L'auto-placeholdering" pour Drupal 8 différencie les sections statiques de la page des sections dynamiques.

Valeurs importantes à observer au chargement d'une page :

Time To First Byte (TTBF): Temps écoulé entre la demande de page html et le début de la réception du premier octet de réponse. Pendant ce temps, le client et le navigateur ne peuvent rien faire.

Time To Interact (TTI): Complètement dépendant du cas d'utilisation, mais c'est ce qui compte vraiment.

Page load time (PLT) : Durée de chargement de la page: Temps total de chargement jusqu' à ce que le chargement soit terminé.

Sur certains CDN (Content Delivery Network) le TTBF n'est pas un critère pertinent. Sur Cloudflare par exemple son serveur de test TTFB se comporte un peu différemment. Lorsqu'il reçoit une requête, il envoie la première lettre de HTTP/1.1 200 OK (le H) et attend 10 secondes avant d'envoyer le reste des en-têtes et de la page elle-même.

Image

Mots clés