Laden...

[erledigt] Webseite auslesen: Erster Aufruf dauert immer 4x so lang wie danach

Erstellt von ArnoNuehm vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.404 Views
A
ArnoNuehm Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren
[erledigt] Webseite auslesen: Erster Aufruf dauert immer 4x so lang wie danach

Guten Morgen,

einen frohen 2. Advent wünsche ich.

Ich lese hier eine Webseite aus und parse den Quelltext.

Das Problem was ich habe ist, wenn ich das Programm starte und die Seite auslese, dauert das ganze so um die 34 Sekunden.
Stosse ich danach erneut das auslesen an, dauert es zwischen 6 und 11 Sekunden.

Hier mal der Code den ich dazu benutze...


            WebClient client = new WebClient();
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.Load(client.OpenRead("http://domain.de"), Encoding.UTF8);
            HtmlNode rootNode = doc.DocumentNode;
            HtmlNodeCollection results = rootNode.SelectNodes("//div");
....

Ich habe auch mal probiert folgendes vorher zu setzen...


            System.Net.ServicePointManager.UseNagleAlgorithm = true;
            System.Net.ServicePointManager.Expect100Continue = false;

Brachte keine Änderung.

Eine Idee??

Gruß

Arno

16.825 Beiträge seit 2008
vor 12 Jahren

Hallo,

in welcher Zeile genau hängt er diese 34 Sekunden laut Debugger ?
Wieso nutzt Du nicht direkt


HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://www.domain.de");

Gruß

M
402 Beiträge seit 2005
vor 12 Jahren

Hi Abt...

HtmlWeb hab ich noch nie gehört, ist das eine Klasse aus dem Framework??

16.825 Beiträge seit 2008
vor 12 Jahren

Hi,

laut deren Dokumentation schon.

Gruß

A
ArnoNuehm Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren

in welcher Zeile genau hängt er diese 34 Sekunden laut Debugger ?

Wie kann ich das feststellen?
Aktuell stoppe ich nur die Zeit vom Anfang bis zum Ende.

Gruß

Arno

16.825 Beiträge seit 2008
vor 12 Jahren

Mit dem Debugger durch-steppen...

A
ArnoNuehm Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren

Wie es aussieht dauer es hier so lang...

doc.Load(client.OpenRead("http://domain.de"), Encoding.UTF8);

Gruß

Arno

925 Beiträge seit 2004
vor 12 Jahren

Hmm... nur so ein Gedanke. Mal probiert, den Aufruf über die IP zu machen, statt über die Domain? Vielleicht ist es der DNS Server, der so lange für die Namensauflösung braucht. Just my two cents...

D
216 Beiträge seit 2009
vor 12 Jahren

Oder mal versucht den client.Proxy auf null zusetzen?

Darthmaim

A
ArnoNuehm Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren

Das mit dem DNS ist sehr unwahrscheinlich, da die Seite sonst problemlos aufzurufen ist und nach dem ersten mal auch das ganze schneller abläuft.

Hab es aber trotzdem probiert, ohne Erfolg.

Das mit dem Proxy hat ebenfalls nichts gebracht.

Was mich eben sehr stutzig macht, ist die Tatsache das es nur beim ersten mal nach Programmstart so lang dauert.
Danach läuft es ja zügiger.
mit den 6 - 11 Sekunden kann ich ja leben.

Gruß

Arno

A
ArnoNuehm Themenstarter:in
47 Beiträge seit 2010
vor 12 Jahren

Hat sich erledigt.

Es war der Proxy.

Ich habe eine zweite Methode in der ersten aufgerufen mit der ich Unterseiten auslese.
Dort hatte ich vergessen das client.Proxy = null; zu setzen wie es vorgeschlagen wurde.

Vielen Dank für die Hilfe !

Gruß

Arno