2 votes

Edge Side Includes (ESI) est-ce quelque chose comme le BigPipe de Facebook?

Tout le monde intéressé par les performances des applications web connaît l'idée derrière BigPipe de Facebook.

Récemment, Symfony a publié une nouvelle fonctionnalité, appelée le sous-framework fragments.

L'idée derrière cette fonctionnalité est d'utiliser la technologie ESI, décrite à W3C comme la Spécification du langage ESI 1.0.

Ma question est : est-ce que BigPipe de Facebook est lié de quelque manière que ce soit à cette technologie ESI ? Puis-je réaliser l'idée de BigPipe en utilisant ESI ?

4voto

Mike B. Points 123

Sans doute pas sans votre propre implémentation de serveur ESI, et même dans ce cas, il est discutable de savoir si cela vaut la peine de subir une baisse de performance.

Si je comprends correctement cet article sur BigPipe, tout ce que le serveur doit faire est a) de flush immédiatement du contenu HTML statique vers le client et b) de démarrer quelques threads de rendu de manière asynchrone et de flush le résultat lorsque le thread a fini de rendre. Le reste est la magie du javascript et n'a rien à voir avec le framework côté serveur.

Symfony est capable de rendre un document HTML simple et d'inclure des balises ESI, donc la première partie est couverte. Mais les ESI dépendent de l'ordre dans lequel les balises sont rencontrées. Cela signifie que même si je suppose que la plupart des serveurs de cache commenceront à traiter toutes les balises ESI de manière asynchrone, ils ne peuvent flush le résultat que dans un ordre spécifique. Cela signifie à son tour que si votre première balise ESI est lente, elle empêchera tout autre "pagelet" d'être flushé vers l'utilisateur.

C'est pourquoi je pense que vous auriez besoin d'un type spécial de serveur de cache qui peut récupérer de manière asynchrone des inclusions tout en ignorant complètement l'endroit où elles apparaissent dans le document.

L'autre gros inconvénient est que chaque balise ESI provoquerait sa propre requête HTTP vers Symfony, ce qui comporte une surcharge de configuration assez importante pour chaque requête.

En conclusion : les ESI sont géniaux si vous voulez retourner une page mise en cache coûteuse à générer avec un tout petit peu de contenu non-cacheable, mais ce n'est probablement pas adapté pour implémenter BigPipe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X