2009-05-14 11 views
5

J'ai commencé à travailler dans une nouvelle société et le projet principal sur lequel je travaille (un projet d'application Web ASP.NET 3.5) prend trop de temps à charger (Environ 1,5 minutes)Le projet d'application Web ASP.NET 3.5 prend trop de temps à se charger initialement

Je suis conscient que c'est généralement la nature des projets d'applications Web, mais mon problème est que cela semble trop long.

Ive a essayé plusieurs choses à essayer de mettre le doigt sur ce qui pourrait être la cause de ce retard, y compris Remplacement du web.config avec une fraîche créée à partir d'un nouveau projet tout effacé de mon app_start dans mon web.config supprimé toutes les DLLs weppart à partir de mon dossier bin (qui me laisse avec 19 dlls dans mon répertoire bin, y compris 6 de la bibliothèque d'entreprise MS)

et encore il prend beaucoup de temps à charger.

Je me demandais si quelqu'un avait des indications quant à la façon dont je faire pour savoir ce qui cause un énorme temps de chargement ou des outils qui me aider à voir ce que mon application est en train de faire quand il commence

merci -Kris

+0

Avez-vous franchi le code? Peut-être qu'il initialise une base de données ou quelque chose. –

+2

La langue ici est un peu ambiguë. Lorsque vous parlez de projet d'application Web, voulez-vous dire que vous chargez le projet dans Visual Studio, ou faites-vous référence à l'heure de démarrage de l'application dans IIS lors de la première frappe? –

+0

Salut Rex, im se référant à l'heure de démarrage de l'application dans IIS sur le coup initial (ou dans ce cas le serveur Web intégré VS) – Lightweight

Répondre

2

Essayez un warm-up script.

JetBrains DotTrace est un excellent profileur ASP.NET.

+1

Merci Chris mais mon problème est de travailler sur le projet, c.-à-d. Développer le code> compiler> regarder les changements - ne peux pas vraiment programmer un réchauffement toutes les 5 minutes – Lightweight

+1

+1 pour la recommandation DotTrace - attacher ça au site et voir ce qui se passe temps de chargement. Jetez aussi un coup d'œil à l'utilisation de la mémoire et à l'utilisation des processeurs - est-ce w3wp qui prend toutes les ressources, ou quelque chose d'autre? –

+0

Salut Chris, je dois être aveugle, je n'ai pas vu la deuxième ligne mentionnant DotTrace, merci – Lightweight

0

Combien de projets y a-t-il? Si vous avez des tas d'assemblys et de dll dans le répertoire bin, cela peut ralentir considérablement les temps de chargement (même s'ils sont assez petits). C'est le meilleur que je puisse suggérer.

+0

Il y a 8 autres projets qui ne me semblent pas si mauvais. il y a beaucoup de dll de partie de Web, c'est pourquoi j'ai essayé de les supprimer tous et de tester le temps de chargement après cela mais toujours aucune joie :( – Lightweight

0

Essayez d'utiliser le profileur SQL et observez l'activité de base de données associée au démarrage.

Les chances sont, il y a un tas de requêtes qui tapent la base de données sur la première page pour initialiser les différents caches.

Si tel est le cas, vous pouvez vous concentrer sur l'optimisation des requêtes qui causent le plus de blocages.

3

Il y a un autre gotcha dans .NET 2.0 et suivants. Si vous avez des assemblys signés dans votre dossier bin, alors CLR essaie de se connecter à une URL VeriSign et récupère une liste de révocation des certificats pour voir s'ils sont valides.

Cela pourrait également vous faire perdre un peu de temps de démarrage. Si vous pensez que cela pourrait contribuer à votre problème, vous pouvez jeter un oeil à ce qui suit aux articles MS:

http://digital.ni.com/public.nsf/allkb/18E25101F0839C6286256F960061B282 
http://support.microsoft.com/kb/936707 

Pour faire face à cela sur une base que vous pouvez ajouter par application les paramètres suivants dans la section de configuration dans votre app.config/web.config.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
     <generatePublisherEvidence enabled="false" /> 
    </runtime> 
</configuration> 

Bien sûr, si vous ajoutez ce paramètre, la validité des DLL signées ne sera plus vérifiée!

+0

Si ceci est principalement un problème dans le développement, vous pouvez l'éteindre tout en développant, et l'avez activé dans l'application en direct. – awe

0

Le profileur ANTS de RedGate pourrait vous donner des indications sur ce qui pourrait vous ralentir.

Définissez un point d'arrêt sur Page_Load dans Default.aspx.cs et démarrez.

Vérifiez le fichier Global.asax pour voir s'il contient des éléments que vous ne connaissez pas.

D'autres projets chargent-ils rapidement? Avez-vous d'autres programmes en cours d'exécution qui pourraient ralentir votre machine? Comme vous le mentionnez, les applications .NET prennent le plus de temps sur la charge initiale ... avez-vous beaucoup de références (bibliothèques externes, dll's ... etc ...)

Si vous publiez sur un serveur intermédiaire ou de développement , charge-t-il rapidement?

Questions connexes