Warum wird eine ASP.Net-Website möglicherweise langsam geladen? [geschlossen]

9

Anekdotisch habe ich viele .aspx-Websites besucht, die für jede Seite eine erhebliche Ladezeit erfordern.

Ist meine Erfahrung einzigartig?

Wenn nicht, warum wird eine ASP.Net-Website möglicherweise langsam geladen?

Bearbeiten: Es ist jetzt etwa 7 Jahre später (29.12.2017). Die gute Nachricht ist, dass ich dieses Problem nicht mehr viel sehe, vielleicht weil Google damit begonnen hat, Websites zu bestrafen, die zu langsam geladen werden. Ich verwende jetzt ASP.NET MVC mit guten Ergebnissen, das derzeit auf privaten virtuellen Vultr-Servern ausgeführt wird (Azure war viel zu langsam, als wir es ausprobiert haben). Einige der schlimmsten Straftäter, die ich jetzt sehe, sind CMS-Systeme wie Wordpress und Drupal, die wahrscheinlich ausgeführt werden Hardware, die für den Datenverkehr auf der Website zu langsam oder zu schnell ist. -HK1

HK1
quelle
10
Könnten viele Faktoren im Spiel sein. Die Site, die Sie gerade verwenden, basiert auf .NET und ist normalerweise sehr schnell (abzüglich Ausfallzeiten / Wartungsperioden). Die Entwickler dieser Websites senden möglicherweise Tonnen von Daten an Sie oder langsame Verbindungen oder überlastete Server usw. usw. usw. Es könnte auch die Wahrnehmung im Spiel sein.
wkl
4
@birryree Du solltest deinen Kommentar als Antwort hinzufügen, da du dort so ziemlich den Nagel auf den Kopf getroffen hast.
Adam Lear
Ich habe dieses Problem mit einfachem Code-Behind behoben. Sie können dies hier überprüfen: http://stackoverflow.com/questions/27339997/how-to-always-your-warm-up-asp-net-websites-webform-mvc ? noredirect = 1 # comment43136405_27339997
VnDevil

Antworten:

22

Fünf Möglichkeiten, die ich mir vorstellen kann (abgesehen von einigen fortgeschrittenen Caching-Techniken und dergleichen):

Jesse C. Slicer
quelle
Sie können kein Beispiel finden?
JeffO
1
ViewState spielt auch bei diesen Problemen eine Rolle.
Erin
1
1) Mit anderen Worten, ASP.NET verwendet mehr Ressourcen als asp classic?
HK1
1
Ich denke, ein weiteres häufiges Problem, das in Ihrer großartigen Antwort (oder einer der anderen Antworten hier) nicht erwähnt wird, ist der langsame Datenbankzugriff. Ich habe mehrere "Budget" -Webhosting-Unternehmen (Netzwerklösungen, ganz zu schweigen von Namen) verwendet und hatte aufgrund des Datenbankzugriffs (SQL Server) einige ziemlich schlechte Verlangsamungen.
HK1
8

Wie anscheinend könnte dies eine Antwort wert sein.

Könnten viele Faktoren im Spiel sein. Die Site, die Sie gerade verwenden, basiert auf .NET und ist normalerweise sehr schnell (abzüglich Ausfallzeiten / Wartungsperioden).

Die Entwickler dieser Websites, zu denen Sie gehen, senden möglicherweise Tonnen von Daten an Sie oder langsame Verbindungen oder überlastete Server usw. usw. usw. Es könnte auch die Wahrnehmung im Spiel sein. Vielleicht ist auch verrücktes Javascript im Spiel und Sie führen IE aus? Oder blinken?

wkl
quelle
4

Wenn Sie nicht genau wissen, was Sie tun, können Sie mit ASP.NET WebForms eine Webanwendung erstellen, indem Sie Steuerelemente auf einem Formular ablegen und sogar die zustandslose Natur von http verbergen. Es funktioniert, aber diese Art der Entwicklung wird niemals zu effizientem Code führen, insbesondere wenn Ihre Datenzugriffsschicht generierte Abfragen umfasst, bei denen alles aus einer SQL Express-Datenbank ohne Indizes ausgewählt wird.

Es gibt viele schnelle asp.net-Websites, die von Leuten entwickelt wurden, die verstehen, wie Webanwendungen wirklich funktionieren. Dazu gehört auch diese Site - sie verwendet ASP.NET MVC, das viel mehr Kontrolle über die Verarbeitung einzelner Anforderungen bietet und die Erweiterung .aspx nicht anzeigt.

Tom Clarkson
quelle
3

Nur Spekulationen hier, da mir das Gleiche aufgefallen ist. Ich vermute , dass ASP - Websites sind in der Regel ( man beachte das Wort neigen ) zu sein , selbst auf einem Unternehmens - Servern gehostet, wie bei oder in Rechenzentren gehostet gegenüber . Daher werden sie häufig auf Hardware und Verbindungen ausgeführt, die nicht wirklich für Hochgeschwindigkeits-Webverkehr ausgelegt sind. Ich vermute, dass auch kalte Fusionsstellen darunter leiden.

GroßmeisterB
quelle
2

Wenn eine Website geladen wird (application.start-Ereignis), dauert es einige Zeit, bis alles in den Speicher geladen ist. Abhängig von den IIS-Einstellungen wird es nach etwa 20 bis 30 Minuten Inaktivität entladen. Ich habe keinen vernünftigen Weg gefunden, um die Anwendung ständig laufen zu lassen, ohne dass ein Dienst GETalle 10+ Minuten ausgeführt wird.

Ein schlecht gestaltetes Backend / Datenschicht kann dazu führen, dass alles langsam läuft (egal wie schnell der Computer es ausführt). Mithilfe der Profilerstellung können Sie feststellen, wo die Probleme liegen.

Tangurena
quelle
1

Sie stellen sich das mit Sicherheit vor. :) :)

Bei jeder Software spielen viele Faktoren eine Rolle. Die Architektur, die Redundanz des Codeflusses, die Qualität des Codes usw. Zu viele, um überhaupt mit der Auflistung zu beginnen.

Möchten Sie nachweisen, dass ASP für die Verwendung auf Unternehmensebene geeignet ist? Diese Website (und alle SE-Websites) werden mit ASP.Net - speziell MVC - erstellt.

Wann war diese Seite das letzte Mal langsam? Ich bin seit über einem Jahr hier und habe noch nie bemerkt, dass Dinge trotz ihrer massiven Nutzerbasis tuckern.


quelle
0

Der Viewstate kann die Postbacks wirklich verlangsamen. Wenn Sie mehrere große Dropdown-Listen auf einer Seite haben, sollten Sie den Ansichtsstatus nicht verwenden.

Mit dem Ansichtsstatus können Sie so tun, als würden Sie an einer Stateful Winforms-App arbeiten. Das kann dich manchmal in Schwierigkeiten bringen.

Lord Tydus
quelle
0

Alle oben genannten sind wahrscheinlich wahr. Der größte einzelne Faktor, der die Leistung der ASP.NET-Site beeinflusste, an der ich gearbeitet habe, war, dass alles, was damit zu tun hatte, alt war. Die .NET Framework-Version, die Server, die Datenbankinfrastruktur und der Code selbst alterten stark.

Ich vermute, dass viele ASP.NET-Sites eher Unternehmenssites sind. Diese bekommen nicht viel Liebe, da sie dazu neigen, nur zu arbeiten . Die Leute schreiben sie erst um, wenn sie müssen, was oft eine sehr lange Zeit ist.

Ich weiß , dass die Seite , dass ich mit dem verwendeten ASP.NET arbeitete eine riesige Speedup bekam nur durch auf die neueste Version des Frameworks zu bewegen, die viel effizienter Jiting und vernünftige Caching Standardwerte hatte.

Die andere Sache, die ich gesehen habe, dass viele ASP.NET-Sites nicht wissen, wie man richtig skaliert. Sie haben keinen ordnungsgemäßen Lastenausgleich eingerichtet, da das Entwerfen ihrer Website für die ordnungsgemäße Verwendung mit Webgärten in der Community nicht üblich oder gut dokumentiert ist. Wenn Sie Ihre Website nicht von Anfang an für Webgärten entwerfen, können Sie den integrierten Scale-Out-Mechanismus von IIS nicht verwenden. Der Software-Lastausgleich mit Windows NLB ist nicht sehr verbreitet und komplex zu verwalten. (Dies geht auf die Tatsache zurück, dass ASP.NET in der Regel Unternehmenssoftware ist und eher von dem Unternehmen verwaltet wird, das die Site betreibt, als von IT-Fachleuten, die wissen, wie man dieses Material richtig konfiguriert.)

Der Hardware-Lastausgleich mit F5s ist sehr, sehr teuer, scheint jedoch der häufigste und einfachste Mechanismus zum Skalieren von ASP.NET-Sites in Unternehmensnetzwerken zu sein. Ich denke, unter den Open-Source-Kunden wird erwartet, dass Sie von Anfang an einen Lastenausgleich mit frei verfügbaren Open-Source-Tools einbauen, die sich je nach Nutzung automatisch skalieren lassen. Dies ist in der ASP.NET-Welt nach dem, was ich gesehen habe, nicht üblich.

Fall
quelle