2010-06-23 4 views
3

un très cool article sur la façon dont facebook divise leur page en "pagelets" pour maximiser le travail effectué par le serveur et le navigateur lors de la construction d'une page complexe qui saisit diverses ressources (annonces, flux, amis, etc.). ils l'appellent bigpipe. En fait, il a parlé de cela lors de l'une de ses conférences et il l'a appelé «rinçage précoce du document».mettre en œuvre BigPipe pour .NET pour améliorer les performances

dans .NET, vous ne pouvez pas facilement faire cela, mais je l'ai fait en remplaçant la méthode de rendu et de vidage tampon de réponse au début, donc c'est possible et ça fonctionne plutôt bien. mais je ne l'ai jamais essayé à grande échelle. Ma question est, est-ce faisable de construire un BigPipe dans .NET? ils ont dit qu'ils ont construit le leur en Java et PHP. Je pense que cela peut aussi être fait dans .NET, mais je me demande si l'architecture WinNET de .NET pourrait être sous-optimale pour faire quelque chose comme ça. J'envisage de pousser un projet dans notre entreprise pour construire quelque chose comme ça - mais je vais devoir faire beaucoup plus de recherches parce que ce ne sera pas un petit projet. Je voudrais construire quelque chose qui pourrait soutenir la rupture de n'importe quelle page arbitraire dans ces "pagelettes". Dans .NET, il serait peut-être bon de pouvoir transformer nos commandes utilisateur personnalisées en ces «pagelettes» et de les «rincer» en morceaux - style bigpipe.

commentaires/réflexions?

Répondre

3

J'ai implémenté une version de BigPipe dans un projet Web ASP.Net MVC, en purgeant et en exécutant le contenu des pagelettes en parallèle. Vous pouvez le lire au How To Implement BigPipe Using ASP.Net MVC et l'enfiler au GitHub.

Cette technique est facile à appliquer si vous implémentez des pagelettes en tant que vues partielles qui sont exécutées à la fin du document HTML, juste avant de fermer la section <body>. En outre, si vous voulez profiter pleinement de BigPipe, vous devez charger le Javascript et le CSS requis par les pagelets dans une certaine séquence, offrant la meilleure expérience utilisateur. BigPipe charge les ressources CSS en parallèle avant d'injecter le code HTML de la pagelet dans la page et, lorsque chaque pagelet a été injecté, il procède au téléchargement et à l'exécution en parallèle de Javascript.

+0

Bonjour Jose, si vous en avez le temps j'apprécierais un petit mot avec vous. Je suis votre didacticiel en ce moment et j'essaie d'implémenter bigpipe dans mon projet mvc mais mes pagelettes continuent à être rendues avant que ma vue/mise en page ne le fasse. Est-ce que cela ressemble à quelque chose d'évident? J'ai essayé de jeter un oeil à votre projet d'exemple mais il ne s'ouvre pas avec VS 2013 – Adrian

+0

Salut @Adrian avez-vous réussi à faire fonctionner cette solution? J'essaie aussi de le faire fonctionner. – Raha

+0

Oui, je l'ai fait. Qu'est-ce qui te dérange? – Adrian

Questions connexes