2009-04-22 1 views
7

Ich verwende einen besonders langsamen virtuellen Webhost (Name zurückgehalten!), Wo die Festplattenleistung sehr schlecht sein kann. Der erste Zugriff auf meine ASP.Net-Websites kann also 1 Minute dauern. (Nach dem erstmaligen Laden ist alles im RAM und in Ordnung.)So verbessern Sie die Startleistung auf IIS/ASP.Net

Ich frage mich, ob jemand weiß, wie man IIS anweist, die Site vorzuladen? Ist Essenz, emulieren den ersten Treffer?

Ich habe mit all den Precompilation Zeug gespielt, es hilft, aber es ist kein Ersatz für die oben genannten.

Danke!

+0

Sieht aus wie es bessere Unterstützung dafür in ASP.net 4.0 gibt: http://www.asp.net/learn/whitepapers/aspnet40/#_Toc223325464 –

+2

Meine Lösung für jetzt ist ein bisschen ein Hack, aber es hilft. Ich verwende einen Website-Überwachungsdienst, der alle 30 Minuten auf eine URL trifft. –

Antwort

3

Muss Ihre Anwendung recyceln? Alle Recyclingoptionen sind in der IIS-Konfiguration und können angepasst werden, um für Ihre Anwendung zu passen.

Das ideale Szenario wäre, alle Anwendungszyklen zu entfernen, damit die Anwendung immer geladen bleibt. Die Wiederverwendung würde dann nur erfolgen, wenn die Datei web.config geändert oder eine neue Version der Anwendung bereitgestellt wurde.

Wenn das tägliche Recycling erforderlich ist, wie in der vorherigen Antwort beschrieben, könnte eine Batch-Datei verwendet werden, um die Anwendung zu recyceln und iexplore.exe mit der URL der Anwendung zu "laden".

0

Warum können Sie nicht eine Batch-Datei haben, die darin zurückgesetzt wurde und die Sie planen, jeden Tag zu einer bestimmten Zeit auszuführen (wenn Sie keine Benutzer auf Ihrem System haben)?

0

Wenn Ihrem Provider beim Neustart des Webservers eine Möglichkeit zum Einbinden zur Verfügung steht, können Sie nach dem Neustart des Webservers eine Batchdatei/Skriptdatei auf Ihrer Website aufrufen. Sie müssen nur auf eindeutige ASP.NET-Assemblydateien zugreifen, um diese bestimmte Assembly in den Arbeitsspeicher zu übernehmen. Wenn Sie also eine Assembly mit 10 Seiten haben, drücken Sie einfach eine der Seiten. Es sollte genug sein. Wenn Sie mehr als eine Assembly haben, drücken Sie in jeder Assembly eine Seite, um diese Assemblys in den Speicher zu laden.

Wenn Sie es nicht bei Ihrem Provider haben können, müssen Sie sich eine klügere Möglichkeit vorstellen, dies selbst zu tun (dh wenn der Provider den Webserver zurücksetzt und die Aufgabe auf Ihrem Rechner plant, diese zu treffen) Seiten selbst).

0

Wie viel von der Website möchten Sie vorinstalliert haben? Wie viele Seiten?

Sie können die Site vorkompilieren, um den "Kompilierung" -Teil des Problems zu entfernen. Wenn die Site jedoch groß genug ist, ist es unter Umständen nicht sinnvoll, die Site "vorab zu laden". Dies trifft insbesondere zu, wenn die Site auf mehreren Hosts ausgeführt wird.

0

Wenn Sie zum ersten Mal eine Seite aus einer kompilierten ASP.NET-Anwendung anfordern, nachdem ihre Assemblys geändert wurden, dauert die Verarbeitung viel länger als eine normale Seitenanforderung.

Eine einfache Lösung für Ihr Problem ist daher, eine Seite aus Ihrer Anwendung sofort nach Änderungen anzufordern. Auf diese Weise sind Sie der Erste, der eine Seite anfordert, und Sie haben die lange Wartezeit und nicht Ihre Benutzer.