2008-09-08 3 views
2

Wir haben ein paar große Lösungen mit jeweils etwa 40 einzelnen Projekten (Klassenbibliotheken und verschachtelte Websites). Es dauert ungefähr 2 Minuten, um alles komplett neu zu machen.So verkürzen Sie Zeit vor Daten nach dem ersten Treffer im Browser

Ein paar Angaben auf dem System:

  • Visual Studio 2005, # C
  • Primary Projekt ist eine Web Application Project
  • 40 Projekte insgesamt (4 Webprojekte)
  • Wir verwenden der interne VS-Webserver
  • Wir verwenden ausgiebig Benutzersteuerelemente, bis hin zu einem Benutzersteuerelement, das ein Textfeld enthält
  • Wir haben AC ouple von Inline - Webprojekten, die es uns ermöglichen, eine Teilbereitstellung durchzuführen
  • Über 120 Benutzersteuerelemente
  • Etwa 200.000 Zeilen Code (inkl. HTML)
  • Wir verwenden Source Safe

Was ich möchte, ist wissen, wie die Zeit zu bringen dauert es, wenn die Seite mit einem Browser zum ersten Mal treffen. Und ich spreche nicht über die vollständige Bereitstellung von Post - ich spreche über eine kleine Änderung im Code, Build, Browser aktualisieren.

Dieser erste Treffer dauert etwa 1 Minute und 15 Sekunden, bevor die Daten zurückkommen.

Um die Dinge zu beschleunigen, habe ich ein wenig mit Ram-Festplatten experimentiert, insbesondere die <Kompilierung> Attribut in web.config, Festlegen der TempDirectory auf meine Ram-Festplatte. Dies beschleunigt die Dinge ein wenig. Interessanterweise wurde dadurch der Zugriff auf alle IOs während des ersten Treffers vom Browser vollständig entfernt.

Bemerkungen
Wir machen nie eine vollständige Kompilierung während der Entwicklung, nur teilweise. Zum Beispiel wird die Klassenbibliothek, an der gerade gearbeitet wird, kompiliert, und dann wird die Hauptseite kompiliert, die dann die Binärdateien von der Klassenbibliothek in das Verzeichnis bin kopiert.

Ich verstehe, dass die asp.net-Engine alle Ascx/Aspx-Dateien analysieren muss, nachdem kritische Dateien geändert wurden (bin Dir zum Beispiel), aber was ich nicht verstehe, ist, warum es das nur wann tun muss eine Bibliothek dll wurde geändert.

So jemand weiß von einem Weg, entweder: Sub-Segment die Lösungen, um schnellere erste Treffer oder Feinabstimmung Einstellungen in Config-Dateien oder etwas zu bieten.

Und noch einmal: Ich spreche nur über die Entwicklung, NICHT Produktionsbereitstellung, so dass die vorkompilierte Kompilierungsoption nicht anwendbar ist.

Danke, Ruvan

Antwort

2

Wow, 120 Benutzersteuerungen, von denen nur einige ein einzelnes TextBox enthalten? Das klingt nach viel Code.

Wenn Sie ein Bibliotheksprojekt ändern, müssen alle Projekte, die von diesem Bibliotheksprojekt abhängig sind, neu kompiliert werden, und auch jedes Projekt, das von ihnen abhängt, usw. den ganzen Stapel hinauf.Sie wissen, dass Sie nur eine Zeile Änderung an einer Funktion vorgenommen haben, die nicht alle Benutzersteuerelemente betrifft, aber der Compiler weiß das nicht.

Und wie Sie wahrscheinlich wissen, werden ASPX- und ASCX-Dateien nur kompiliert, wenn die Webanwendung zum ersten Mal gestartet wird.

Eine mögliche Geschwindigkeitsverbesserung könnte durch Ändern Ihrer ASCX-Dateien in Composite-Steuerelemente statt in einem anderen Bibliotheksprojekt erzielt werden. Diese würden dann zur Kompilierungszeit kompiliert werden (wenn Sie so wollen) und nicht zur Ladezeit der Webanwendung.

Verwandte Themen