AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Vezögerung beim laden der Seiten mit IdHTTP?
Thema durchsuchen
Ansicht
Themen-Optionen

Vezögerung beim laden der Seiten mit IdHTTP?

Ein Thema von uups · begonnen am 1. Okt 2019 · letzter Beitrag vom 2. Okt 2019
Antwort Antwort
uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#1

Vezögerung beim laden der Seiten mit IdHTTP?

  Alt 1. Okt 2019, 15:58
Ich lade testweise eine bestimmte Seite mit Indys TIdHTTP und messe dabei mit QueryPerformanceCounter die Zeit, die der Client dafür braucht. Zum Vergleich lade ich die selbe Seite im Firefox und beobachte den Ladevorgang mit Netzwerkanalyse-Tool von Firefox (Menü -> Web-Entwickler -> Netzwerkanalyse). Laut dem Tool braucht der Browser im Schnitt etwa 10x so wenig Zeit für den Ladevorgang (reines HTML ohne Ressourcen und Media). Wo ist der Haken?

Ich gebe zu, dass der QueryPerformanceCounter vielleicht nicht die beste Methode ist und auch auf das Netzwerkanalyse-Tool des Browsers ist kein 100%-ger Verlass, aber dass sich die Ladezeiten so gravierend unterscheiden hätte ich nicht erwartet. Ich habe sogar versucht, für den Request die gleichen Bedingungen zu schaffen, die der Browser hat, geändert hat sich dabei nichts.

Delphi-Quellcode:
begin
  ...
  SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  SSLHandler.SSLOptions.Method := sslvTLSv1;
  Compressor := TIdCompressorZLib.Create(nil);
  http := TIdHTTP.Create(nil);
  http.IOHandler := SSLHandler;
  http.Compressor := Compressor;
  http.CookieManager := MainCookieManager;
  http.HandleRedirects := true;
  //http.ConnectTimeout := 1000;
  //http.ReadTimeout := 1000;
  http.Request.AcceptLanguage := 'de,en-US;q=0.7,en;q=0.3';
  http.Request.AcceptEncoding := 'gzip, deflate, br';
  http.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0';
  try
    QueryPerformanceFrequency(freq);
    QueryPerformanceCounter(startTime);
    Source := http.get(TEST_URL);
    QueryPerformanceCounter(endTime);
    RequestDuration := (endTime - startTime) * 1000 div freq;
  except
  end;
  http.Free;
  SSLHandler.Free;
...
end;


Für die Tests nutze ich ein sauberes, nicht ausgelastetes Windows Server.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Vezögerung beim laden der Seiten mit IdHTTP?

  Alt 1. Okt 2019, 16:59
Caching?

Mir ist nur aufgefallen dass dein Codeschnipsel unten beim ersten mal ein vielfaches der Zeit braucht als wenn man ein zweites, drittes mal auf den Button drückt. Dein Firefox wird sicher wohl auch einiges cachen?

Ich bekomme beim ersten Aufruf auch ungefähr ein Verhältnis von 1:10 - 1:15, danach ist der Browser "nur noch" doppelt so schnell. Das finde ich eigentlich einen ganz guten Wert wenn sich der gute Delphi-Compiler plus Indy-Library mit millionen(millarden?)-fach benutzter, hoch-optimierter Software messen muss...

Geändert von Der schöne Günther ( 1. Okt 2019 um 17:03 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Vezögerung beim laden der Seiten mit IdHTTP?

  Alt 2. Okt 2019, 03:58
Hallo,
welche Version der SSL-Bibliotheken benutzt Du?
Was passiert, wenn Du http statt https benutzt?
Heiko
  Mit Zitat antworten Zitat
uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#4

AW: Vezögerung beim laden der Seiten mit IdHTTP?

  Alt 2. Okt 2019, 10:24
Guten Morgen!

Bestimmt, lade die Daten in einen String. Das ganze Overhead mit dem Laden in den Speicher und anschließend das Charset-Decoding zu UTF-16 usw. schlucken bestimmt eine oder andere Milliskunde.

Ich bekomme beim ersten Aufruf auch ungefähr ein Verhältnis von 1:10 - 1:15, danach ist der Browser "nur noch" doppelt so schnell. Das finde ich eigentlich einen ganz guten Wert wenn sich der gute Delphi-Compiler plus Indy-Library mit millionen(millarden?)-fach benutzter, hoch-optimierter Software messen muss...
Da stimme ich zu, nicht desto trotz würde mich interessieren, was genau in meinem Fall das Ganze "doppelt so langsam" macht. Ist das die fehlerhafte Konfiguration des Sockets, die zu Verzögerungen bei den Anfragen führt? Oder liegt das Problem womöglich tiefer in den Indy-Sources? Spannend.

welche Version der SSL-Bibliotheken benutzt Du?
Was passiert, wenn Du http statt https benutzt?
Die OpenSSL-DLLs haben die Versionsnummer 1.0.2.18.
Wenn ich http statt https benutze, wird die Seite auf https umgeleitet.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Vezögerung beim laden der Seiten mit IdHTTP?

  Alt 2. Okt 2019, 13:37
Vollständig rausfinden wirst du es nur wenn Du die Indy Library profilest.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Vezögerung beim laden der Seiten mit IdHTTP?

  Alt 2. Okt 2019, 16:31
Ich bin da nicht am Ball geblieben, aber interessant wäre vielleicht auch ob es nicht z.B. über HTTP/2 übertragen wird. Das soll ja vorrangig die Übertragungsgeschwindigkeit gegenüber HTTP verbessern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz