Daniel Reckling: Schnell mehrere AJAX-Requests ausführen

Hallo,

ich habe folgendes Problem:

Auf einer Seite werden mehrere Artikel mit Foto angezeigt. Mittels einer AJAX-Funktionalität kann ich zwischen mehreren Seiten hin- und herblättern. Dabei besitzen die einzelnen Seiten durch die genannten Fotos eine merkbare Ladezeit (akzeptabel).

Wenn ich allerdings auf die nächste Seite weiterblättern will bevor alle Grafiken geladen sind, wird der HTTP-Request von AJAX zwar entgegen genommen, aber nicht ausgeführt - da die Bilder noch laden und die meisten Browser max. zwei Verbindungen gleichzeitig aufbauen. In folge dessen ist ein schnelles Durchblättern nicht möglich, es muss immer gewartet werden, bis alle Grafiken einer Seite geladen sind, ehe die nächste geöffent werden kann. (nicht akzeptabel)

Frage: Kann ich dieses Problem dadurch umgehen, dass ich die Grafiken auf einen extra virtual Host auslagere? Benötigt dieser VH dann eine getrennte IP, damit er nicht nach der DNS-Auflösung als gleicher Host identifiziert wird?

Viele Grüße,
Daniel Reckling

  1. Hi,

    und die meisten Browser max. zwei Verbindungen gleichzeitig aufbauen.

    Also konkret: Der IE wenn er in der (miserablen) Grundkonfiguration ist.

    In folge dessen ist ein schnelles Durchblättern nicht möglich, es muss immer gewartet werden, bis alle Grafiken einer Seite geladen sind, ehe die nächste geöffent werden kann. (nicht akzeptabel)

    "Nicht akzeptabel" ist IMHO auch die Verwendung von Ajax um der Verwendung willen. Ich bin mir auch nicht sicher, ob die Väter des XMLHTTPRequests mit ihrer Erfindung die Abschaffung der herkömmlichen Webstruktur (mit all ihren bekannten Vorteilen) im Sinn hatten, oder nicht vielmehr eher doch eine gezielte Verbesserung, wo sie auch wirklich sinnvoll ist.

    Aber da ich das Projekt konkret nicht kenne, dies nur als allgemeiner Gedanke ...

    Frage: Kann ich dieses Problem dadurch umgehen, dass ich die Grafiken auf einen extra virtual Host auslagere?

    Beschränkungen des Clients lassen sich i.a. nicht durch Tricks auf dem Host aufheben.

    U.U. könnte es (für entsprechend konfigurierte Clients) hilfreich sein, die Grafiken vor dem eigentlichen, Ajax-initialisiertn Laden, separat vorzuladen - und dieses Cachen bei einem Klick auf "weiter" durch Löschen der betreffenden image-Objekte abzubrechen (falls das funktioniert).

    Generell könnte es hilfreich sein, die Grafiken der nächsten Seite bereits dann schon mal im voraus zu holen, wenn die aktuelle Seite fertig ist.

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Hi,

      und die meisten Browser max. zwei Verbindungen gleichzeitig aufbauen.
      Also konkret: Der IE wenn er in der (miserablen) Grundkonfiguration ist.

      und jeder andere auch, wenn dessen Konfiguration nicht massiv kastriert wurde.

      Frage: Kann ich dieses Problem dadurch umgehen, dass ich die Grafiken auf einen extra virtual Host auslagere?
      Beschränkungen des Clients lassen sich i.a. nicht durch Tricks auf dem Host aufheben.

      Wenn diese Beschränkungen tatsächlich auf einem Standard wie HTTP/1.1 basieren, welcher pro Client/Server-Kombination nur vier gleichzeitige Verbindungen erlaubt, verdient das Wechseln zu einer anderen Client/Server-Kombination nicht unbedingt die Bezeichnung "Trick". Es ist eine sinnvolle, wirksame und standardkonforme Umgehung der Beschränkung.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Hi,

        und die meisten Browser max. zwei Verbindungen gleichzeitig aufbauen.
        Also konkret: Der IE wenn er in der (miserablen) Grundkonfiguration ist.
        und jeder andere auch, wenn dessen Konfiguration nicht massiv kastriert wurde.

        Wieso kastriert?

        Ansonsten: Die Beschränkung auf 2 parallele Verbindungen war bei mir noch immer das erste, was rausflog ... =:-o

        Wenn diese Beschränkungen tatsächlich auf einem Standard wie HTTP/1.1 basieren, welcher pro Client/Server-Kombination nur vier gleichzeitige Verbindungen erlaubt,

        Na und? Browser sollten heutzutage persistent connections nutzen:

        "HTTP requests and responses can be pipelined on a connection. Pipelining allows a client to make multiple requests without waiting for each response, allowing a single TCP connection to be used much more efficiently, with much lower elapsed time."

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. Hi,

          Wieso kastriert?

          weil der Browser dazu entweder gegen HTTP/1.1 verstoßen muss, oder aber auf HTTP/1.0 konfiguriert wird, was ziemlich veraltet wird. RFC 2616 stammt aus dem letzten Jahrtausend (nach jeder üblichen Definition des Begriffes).

          Wenn diese Beschränkungen tatsächlich auf einem Standard wie HTTP/1.1 basieren, welcher pro Client/Server-Kombination nur vier gleichzeitige Verbindungen erlaubt,
          Na und? Browser sollten heutzutage persistent connections nutzen:

          Im Laufe meiner Berufserfahrung gab es immer wieder irgend welche Probleme, die i.d.R. hart zu erkennen waren, und deren Lösung schlussendlich darin bestand, persistente Verbindungen zu untersagen. Insofern: Theoretisch ja, praktisch nein :-)

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Hi,

            Im Laufe meiner Berufserfahrung gab es immer wieder irgend welche Probleme, die i.d.R. hart zu erkennen waren, und deren Lösung schlussendlich darin bestand, persistente Verbindungen zu untersagen. Insofern: Theoretisch ja, praktisch nein :-)

            Oh, IIRC sind die persistent connections beim Apache die Default-Einstellung ... =:-)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi,

    Auf einer Seite werden mehrere Artikel mit Foto angezeigt. Mittels einer AJAX-Funktionalität kann ich zwischen mehreren Seiten hin- und herblättern.

    Die Vorteile von Ajax liegen bekanntlich darin, etwas im Hintergrund zu tun: Google-Maps lädt die Nachtbargrafiken vor, um nahtloses Ziehen per Maus zu ermöglichen.
    Warum aber nutzt Du Ajax, um schlicht eine Seite weiter zu gehen? Hierbei wird lediglich der klassische Link durch einen Ajax Request ersetzt, nach Deiner Beschreibung aber nicht, um z.B. die Grafiken der nächsten Seite vorzuladen. Erscheint mir irgendwie nicht vorteilhaft.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Hi,

      Die Vorteile von Ajax liegen bekanntlich darin, etwas im Hintergrund zu tun: Google-Maps lädt die Nachtbargrafiken vor, um nahtloses Ziehen per Maus zu ermöglichen.

      könntest Du den Zusammenhang zwischen Mäusen und Nachtbars bitte präzisieren?

      Cheatah, SCNR

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes