2009-03-24 7 views
11

Best Practices for Speeing Up Your Web Site de Yahoo comprend la recommandation suivante:Puis-je vider le tampon au plus tôt avec ASP.NET?

Lorsque les utilisateurs demandent une page, il peut prendre de 200 à 500 ms pour le serveur principal à point ensemble la page HTML. Pendant ce temps, le navigateur est inactif pendant qu'il attend l'arrivée des données. En PHP vous avez la fonction flush(). Il vous permet d'envoyer votre réponse HTML partiellement prête au navigateur afin que le navigateur puisse commencer à récupérer des composants pendant que votre backend est occupé avec le reste de la page HTML. L'avantage est principalement visible sur les backends occupés ou les frontends légers. Un bon endroit à considérer est juste après le HEAD parce que le HTML pour la tête est généralement plus facile à produire et il vous permet d'inclure tous les fichiers CSS et JavaScript pour que le navigateur commence à aller chercher en parallèle pendant que le backend est encore En traitement.

Exemple:

... <!-- css, js --> 
</head> 
<?php flush(); ?> 
<body> 
... <!-- content --> 

Notez le point où la chasse se produit ici est après la balise de tête est écrite. Cela a beaucoup de sens pour que le navigateur puisse commencer à charger des images et des scripts pendant que le reste de la page est rendu et servi.

Y at-il un moyen de vider après la tête (ou toute autre partie de la page) en utilisant explicitement ASP.NET?

Répondre

10

Vous devriez être en mesure de mettre ce qui suit dans votre page entre la fin de la tête et le début de l'instruction du corps:

<% Response.Flush(); %> 

Cependant, soyez prudent dans le cas où vous utilisez un script gestionnaire ou tout autre type de contrôle qui va s'enregistrer pour la sortie dans la section head du html.

+0

Oui ... une fois que la réponse a commencé à être vidée, cela empêchera beaucoup de choses d'écrire dans l'objet de réponse. –

3

Vous pouvez définir explicitement Buffer = true dans la balise @Page en haut de la page afin d'éviter les erreurs de lancement Response.Flush().

Questions connexes