Je viens de découvrir pourquoi tous les ASP.Net les sites web sont lents, et je suis en train de travailler sur ce qu'il faut faire

Je viens de découvrir que chaque demande dans un ASP.Net l'application web a une Séance de verrouillage au début d'une demande, et puis il libère à la fin de la demande!

Dans le cas où les implications de ce sont perdu sur vous, comme elle l'a été pour moi au premier abord, cela signifie essentiellement la suivante:

  • À tout moment un ASP.Net page est longue à charger (peut-être en raison d'une base de données est lente appel ou quoi que ce soit), et que l'utilisateur décide d'accéder à une page différente parce qu'ils sont fatigués d'attendre, ILS ne PEUVENT PAS! L'ASP.Net session de verrouillage des forces de la nouvelle page de demande d'attendre jusqu'à ce que la demande initiale a fini sa lente et douloureuse de la charge. Arrrgh.

  • À tout moment un UpdatePanel se charge lentement, et que l'utilisateur décide d'accéder à une autre page avant de l'UpdatePanel a terminé la mise à jour... ILS ne PEUVENT PAS! L'ASP.net session de verrouillage des forces de la nouvelle page de demande d'attendre jusqu'à ce que la demande initiale a fini sa lente et douloureuse de la charge. Double Arrrgh!

Alors, quelles sont les options? Jusqu'à présent, j'en suis venu avec:

  • Mettre en œuvre une Coutume SessionStateDataStore, qui ASP.Net prend en charge. Je n'ai pas trouvé trop de là à copier, et il semble genre de risque élevé et facile à gâcher.
  • Garder une trace de toutes les demandes en cours, et si la demande vient de la même utilisateur, d'annuler la demande d'origine. Ca semble assez extrême, mais il pourrait fonctionner (je pense).
  • N'utilisez pas de Session! Quand j'ai besoin d'une sorte d'état pour l'utilisateur, j'ai juste l'utilisation de Cache au lieu de cela, et les principaux éléments sur le nom d'utilisateur authentifié, ou quelque chose de ce genre. Semble de nouveau extrêmes.

J'ai vraiment ne peux pas croire que le ASP.Net Microsoft team aurait laissé un énorme goulot d'étranglement des performances dans le cadre de la version 4.0! Ai-je raté quelque chose d'évident? Comment serait-il difficile d'utiliser un thread-safe collection pour la Session?

  • Vous vous rendez compte que ce site est construit au sommet .NET. Cela dit, je pense qu'il évolue très bien.
  • OK, donc j'étais un peu facétieux avec mon titre. Encore, à mon humble avis les performances choquantes que la sortie de la boîte de mise en œuvre de session impose est saisissante. Aussi, je parie que le Dépassement de Pile gars ont eu à faire un bon peu de hautement personnalisé dev pour obtenir les performances et l'évolutivité ils ont atteint et bravo à eux. Enfin, Stack Overflow est une APPLICATION MVC, pas WebForms, qui je parie aide (même si il est vrai que cela encore utilisés de la même session de l'infrastructure).
  • Article sur cette MVC, à partir d'un point de vue
  • Si Joel Mueller vous a donné l'information afin de résoudre votre problème, pourquoi n'avez-vous pas de marquer sa réponse que la réponse correcte? Juste une pensée.
  • Joël Muller a fourni beaucoup d'informations, et je voulais le remercier pour cela. Cependant, j'ai finalement allé avec une autre route que celle qui est proposée dans son poste. Par conséquent, le marquage d'un poste différent, comme la réponse.
  • Avez-vous vérifié si votre site démarre plus vite sans https? Si oui, essayez de le fixer dans ce MCS post: blogs.msdn.microsoft.com/mcsuksoldev/2011/01/19/...
  • Comment avez-vous compris que votre session est verrouillée? Est-il possible de comprendre par programme de cette session est verrouillée?

InformationsquelleAutor James | 2010-09-02