bennm: Verzögerung zwischen zwei Ajax-Requests

Hallo,

in einem Beispielprogramm sende ich ein Ajax-Request an einen zweiten PC, auf dem ein Apache-Webserver mit einem PHP-Antwortskript läuft. Zwischen Request und Server-Response vergehen gerade einmal 9 ms. Wenn ich in der onreadystatechanged-Funktion, in der ich die Serverantwort auswerte am Ende erneut einen Request sende, kann ich in Wireshark eine Verzögerung von 250 ms messen, obwohl nur eine Zeile Javascript-Code ausgeführt wird, in der eine Variable um 1 erhöht wird.

Warum tritt diese Verzögerung zwischen den Ajax-Requests auf? (Ich benutze Firefox 3.6 und Firebug 1.6 -> dort kann ich die Zeit von 250 ms auch messen). Mein Ajax-Skript funktioniert an sich auch - nur halt mit Verzögerung.

Hier ist mein Quellcode:

  
var request = null;  
var Test    = 0;  
  
function ajaxinit() {  
  if (window.XMLHttpRequest) {  
    request = new XMLHttpRequest();  
  } else if (window.ActiveXObject) {  
    try {  
      request = new ActiveXObject('Msxml2.XMLHTTP');  
    } catch (e) {  
      try {  
        request = new ActiveXObject('Microsoft.XMLHTTP');  
      } catch (e) {}  
    }  
  }  
  
  if (!request) {  
    return false;  
  }  
  request.onreadystatechange = interpretRequest;  
  SendReq('test');  
  return true;  
}  
  
  
function SendReq(myVar) {  
  if (request) {  
  
    try {  
      netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
    } catch(e) {}  
  
    var url = 'http://192.168.178.3/AjaxTests/ServerAnswer.php?myVar=' + myVar;  
  
    request.open('get', url, true);  
    request.send(null);  
  }  
}  
  
  
function interpretRequest() {  
  if (request.readyState == 4 && request.status == 200) {  
    Test++;  
    SendReq('test');  
  }  
}  

  1. Warum tritt diese Verzögerung zwischen den Ajax-Requests auf? (Ich benutze Firefox 3.6 und Firebug 1.6 -> dort kann ich die Zeit von 250 ms auch messen). Mein Ajax-Skript funktioniert an sich auch - nur halt mit Verzögerung.

    Das hat sicher nichts mit JS zu tun, sondern ist eine Frage was da im Browser intern passiert. Ich vermute aber, dass das einfach die Zeit ist, die der Browser braucht um so einen Request vorzubereiten.

    Struppi.

    1. Wenn das tatsächlich so wäre, dann würde diese Möglichkeit für eine periodische Aktualisierung einer Anzeige nur sehr langsam sein.

      Kennst du eine besser Möglichkeit, um z.B. alle 10 ms einen Wert zu aktualisieren, ohne gleich die ganze Seite neu zu laden (10 ms für das erneute Senden, d.h. exklusive Übertragungsdauer)?

      1. Hi,

        Kennst du eine besser Möglichkeit, um z.B. alle 10 ms einen Wert zu aktualisieren, ohne gleich die ganze Seite neu zu laden (10 ms für das erneute Senden, d.h. exklusive Übertragungsdauer)?

        Von was für Werten redest du, die eine derartige Aktualisierungsrate erfordern würden?

        Webseiten sind kein Fernsehen oder Kino, erfordern also iaR. kein 25- bis 30-faches „aktualisieren“ pro Sekunde (zumindest nicht mit serverseitigen Daten).

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Da hast du sicherlich im klassischen Sinne Recht, aber wenn man so etwas verwendet: http://www.ulrichradig.de/home/index.php/avr/avr-webmodule, dann macht das schon wieder Sinn. Hast du dazu vielleicht einen Vorschlag?

          1. Da hast du sicherlich im klassischen Sinne Recht, aber wenn man so etwas verwendet: http://www.ulrichradig.de/home/index.php/avr/avr-webmodule, dann macht das schon wieder Sinn.

            Inwiefern?

            Struppi.

            1. Beispielsweise könnte man darüber eine Spannung messen und den Messwert auf der Website in "Echtzeit" anzeigen.
              Klar ginge das auch über TCP bzw. UDP, aber über eine Website wäre das schon sehr nett - vor allen Dingen braucht man dann keine Software zu installieren.

              1. Nachdem ich nun einmal das Skript mit dem IE8 ausprobiert habe, musste ich feststellen, dass es damit deutlich schneller läuft, d.h. es sind nur noch 10 ms Verzögerung wahrnehmbar.

  2. Hallo,

    ich denke auch, das liegt am Browser, wie Struppi meint.

    Beschreibe mal kurz Dein Vorhaben, evntl. fällt mir da was ein.

    Ansonsten haste schon Recht, die Besucher wollen was sehen, was hören, wollen Multimedia! Und das im Zeitalter von Breitbandanschlüssen, es ist ein Jammerbild, was heutige Browser dazu abgeben.

    http://rolfrost.de/aresponses.html

    Hotti