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
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ß
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi Abt...
HtmlWeb hab ich noch nie gehört, ist das eine Klasse aus dem Framework??
Hi,
laut deren Dokumentation schon.
Gruß
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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
Mit dem Debugger durch-steppen...
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Wie es aussieht dauer es hier so lang...
doc.Load(client.OpenRead("http://domain.de"), Encoding.UTF8);
Gruß
Arno
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...
Oder mal versucht den client.Proxy
auf null
zusetzen?
Darthmaim
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
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