Nano: Problem mit Embedded Webserver in einem Messgerät

Hallo,

ich hoffe, niemand wird gleich durch die Länge dieses Beitrags abgeschreckt, aber viel kürzer lässt sich mein Problem halt nicht schildern.

In einem Messgerät habe in einen kleinen Webserver in die Software eingebettet. Dadurch kann eine bei Aufruf dynamisch erzeugte HTML-Datei abgerufen werden, welche noch auf eine CSS-Datei und 2 GIFs verweist. Diese Dateien liegen "fest" im Filesystem des Gerätes. Damit die angezeigten Messwerte aktuell bleiben, wird über eine Refresh-Anweisung in den Meta-Angaben der HTML-Datei diese alle paar Sekunden erneut geladen.

Jetzt habe ich folgendes Problem: Ab und zu wird entweder die CSS-Datei und/oder eine der GIFs vom Browser nicht geladen, d.h. die Anzeige ist dann entweder unformatiert oder es fehlt ein/beide Bilder in der Anzeige des Browsers. Nach dem Refresh ein paar Sekunden später ist dann (meist) alles wieder da. Das ist sehr störend. (Getestet mit Firefox 1.5 + 2.0, IE6 + IE7)

Eine Analyse des Datenverkehrs im Netzwerk zeigte die Ursache des Problems: Der Webserver kann aufgrund beschränkter Ressourcen nur 1 Socket zur Verfügung stellen. Der Browser versucht aber noch während des Einlesens der HTML-Datei, weitere Sockets für die Abholung der anderen 3 Dateien zu öffnen. Das Gerät antwortet auf die entsprechenden SYN-Anweisungen in TCP mit RST. Der Browser versucht es dann eine Weile später wieder - und wenn die HTML-Datei fertig abgeholt und der Socket geschlossen wurde, dann kann er auch (meist erfolgreich) nacheinander die anderen Dateien abholen.

Jetzt passiert es aber ab und zu, dass bei einer der 3 Dateien mehrmals der Verbindungsaufbau nicht klappte, weil gerade eine andere Datei ausgelesen wurde. (Die zeitliche Abfolge der einzelnen Anfragen differiert ja immer ein wenig.) Meine Analysen zeigten, dass der Browser es genau 3 mal versucht, die Verbindung aufzubauen. Klappt das auch beim 3. Mal nicht, dann fordert er die Datei nicht mehr an.

Da ich im Webserver nicht mehr Sockets zur Verfügung stellen kann, suche ich nach einer anderen Lösung des Problems. Meine Fragen:

1. Gibt es irgendwo in den Browser-Einstellungen eventuell eine Möglichkeit, wo man den Browser anweisen kann, nur 1 Socket zu öffnen und/oder alle Dateien nacheinander abzuholen?

2. Gibt es irgendwo in den Browser-Einstellungen eventuell eine Möglichkeit, die Anzahl der Versuche für den Verbindungsaufbau hochzusetzen? (Ich weiß nicht, ob das irgendwo in einer RFC o.ä. so festgelegt ist, dass der Browser das 3x versuchen soll, oder ob das nur unter den Gegebenheiten mit meinem Webserver so gehandhabt wird.)

3. Hat jemand eine andere Idee für eine Lösung des Problems?

Vielen Dank im Voraus für eure Antworten!

Gruß,

Nano

  1. Hallo

    Also mit deinem Problem wirst du bei FF besser aufgehoben sein als beim IE. Dort nämlich hast du ein Open-Source-Produkt, dass du an genau dieser Stelle releativ leicht anpassen könntest.

    Dazu würde ich mich einfach mal dort in den Abteilungen durchfragen.

    Herzliche Grüße
    Wolfgang

    1. Hallo Wolfgang!

      Also mit deinem Problem wirst du bei FF besser aufgehoben sein als beim IE. Dort nämlich hast du ein Open-Source-Produkt, dass du an genau dieser Stelle releativ leicht anpassen könntest.

      Das wird mir nicht weiterhelfen, da die Kunden ja mit ihrem Browser auf das Messgerät zugreifen sollen. Und die werde ich wohl kaum dazu überreden können, extra dafür einen modifizierten FF zu installieren.

      Gruß,  Nano

  2. hi,

    Eine Analyse des Datenverkehrs im Netzwerk zeigte die Ursache des Problems: Der Webserver kann aufgrund beschränkter Ressourcen nur 1 Socket zur Verfügung stellen.

    Der Browser ist also der einzige Client, der überhaupt auf diesen Webserver zugreift?

    1. Gibt es irgendwo in den Browser-Einstellungen eventuell eine Möglichkeit, wo man den Browser anweisen kann, nur 1 Socket zu öffnen und/oder alle Dateien nacheinander abzuholen?

    Ja, man kann idR. einstellen, wie viele Verbindungen maximal zu einer "Domain" bzw. auch IP aufgebaut werden sollen.
    Default im IE ist AFAIK 2, durch einen Registry-Eintrag kann man das aber hochsetzen. Also sollte runtersetzen evtl. genauso gehen(?).
    Und Opera/Firefox erlauben es m.W. direkt in ihrer Konfiguration, diese Zahl einzustellen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Ja, man kann idR. einstellen, wie viele Verbindungen maximal zu einer "Domain" bzw. auch IP aufgebaut werden sollen.

      Und Opera/Firefox erlauben es m.W. direkt in ihrer Konfiguration, diese Zahl einzustellen.

      Bei Firefox wäre das network.http.max-connections-per-server, zu finden in about:config.

      Dadurch kann eine bei Aufruf dynamisch erzeugte HTML-Datei abgerufen werden, welche noch auf eine CSS-Datei und 2 GIFs verweist. Diese Dateien liegen "fest" im Filesystem des Gerätes.

      Wenn diese feststehen, wäre es sinnvoll, den Browser explizit auf seinen Cache hinzuweisen (Expires, Cache-Control).

      1. Bei Firefox wäre das network.http.max-connections-per-server, zu finden in about:config.

        Danke für den Hinweis. Ich hatte zuerst alle network.http.max-... in about:config auf 1 gesetzt und hätte jetzt durch Versuchen herausfinden müssen, welcher Eintrag zuständig ist. So habe ich mir Arbeit gespart - und es funktioniert wirklich. (Allerdings mit dem Nachteil, dass ich mir damit generell den Browser verlangsame.)

        Wenn diese feststehen, wäre es sinnvoll, den Browser explizit auf seinen Cache hinzuweisen (Expires, Cache-Control).

        Das wäre natürlich am besten, wenn der Browser selbst merkt, dass er die Dateien gar nicht neu holen braucht. Weißt du auch, wie ich das erreiche?
        Ich befürchte allerdings, dass der Browser trotzdem erstmal eine neue Verbindung zum Webserver aufbauen will. Soweit ich weiß ist es doch so, dass im HTTP-Protokoll mitgeschickt wird, von wann die Datei im Cache ist und der Webserver ggf. den HTTP-Code 304 (Not Modified) zurückschickt.

        Gruß,  Nano

        1. Wenn diese feststehen, wäre es sinnvoll, den Browser explizit auf seinen Cache hinzuweisen (Expires, Cache-Control).

          Ich befürchte allerdings, dass der Browser trotzdem erstmal eine neue Verbindung zum Webserver aufbauen will. Soweit ich weiß ist es doch so, dass im HTTP-Protokoll mitgeschickt wird, von wann die Datei im Cache ist und der Webserver ggf. den HTTP-Code 304 (Not Modified) zurückschickt.

          Nein, schickt der Server dem Browser ein Ablaufdatum per Expires, ist es üblicherweise so, dass der Browser zumindest in der laufenden Sitzung bis zum gegebenen Ablauf nicht neu anfragt, dann jedoch in der Tat nach dem von dir beschriebenen Schema. Das Ganze hängt allerdings von den Browsereinstellungen ab, meist finden sich dort Einträge à la "Bei jedem Zugriff prüfen", "Nach jedem Browserstart prüfen" und "Nur nach Ablauf prüfen" (im Firefox gibt es sie anscheinend nicht mehr, der IE hat sie unter "Temporäre Dateien" > Einstellungen).
          Wie du nun deinem Webserver beibringst, bei den statischen Dateien eine Expires-Zeile auszuspucken (und nur da), sollte in seiner Anleitung zu finden sein.

          Für die CSS-Daten ergäbe sich noch die Möglichkeit, sie in das HTML-Dokument einzubinden. Die Vergrößerung des HTML-Codes ist gegenüber dem gelegentlichen Totalausfall eventuell das kleinere Übel.

          Das Zwischenschalten eines zweiten Webservers (fragt nur die HTML-Datei ab und liefert seinerseits HTML- sowie CSS- und Grafikdateien) stünde auch offen, ist aber sicher etwas zu viel des Guten, auch wenn ich vermute, dass der Webserver im Messgerät eigentlich weniger als Webserver denn als rudimentäre Datenschnittstelle gedacht ist, Auslesen ja, Aufbereiten nein.

          Nichtsdestotrotz ist aber festzuhalten, dass das alles nur ein Rumdoktern an den Symptomen ist. Die Ursache ist der Webserver, vielleicht gibt es da ja doch noch eine Änderungsmöglichkeit (und sei es die Bitte um Erweiterung an den Autor bzw. Hersteller).

          1. Hallo Bla!

            ... Das Ganze hängt allerdings von den Browsereinstellungen ab, meist finden sich dort Einträge à la "Bei jedem Zugriff prüfen", "Nach jedem Browserstart prüfen" und "Nur nach Ablauf prüfen" (im Firefox gibt es sie anscheinend nicht mehr, der IE hat sie unter "Temporäre Dateien" > Einstellungen).

            Hilf mir doch bitte nochmal: Wo genau finde ich die "Temporäre Dateien"? Entweder stelle ich mich zu blöd an oder im IE7 hat sich das mal wieder geändert gegenüber dem IE6. (Da kann ich gerade nicht nachschauen, der ist auf einem anderen Rechner installiert.)

            Wie du nun deinem Webserver beibringst, bei den statischen Dateien eine Expires-Zeile auszuspucken (und nur da), sollte in seiner Anleitung zu finden sein.

            Das ist nicht vorgesehen, dazu muss ich den Source Code ändern. Ist wie gesagt ein einfacher, kleiner Webserver für Embedded Systems.

            Für die CSS-Daten ergäbe sich noch die Möglichkeit, sie in das HTML-Dokument einzubinden. Die Vergrößerung des HTML-Codes ist gegenüber dem gelegentlichen Totalausfall eventuell das kleinere Übel.

            Daran hatte ich auch schon gedacht, aber ich wollte mir eigentlich offenhalten, dass ich für Kunden die Stylesheet-Datei bei Bedarf anpassen kann. Über FTP kann ich (oder der Kunde) eine geänderte Datei hochladen.

            Das Zwischenschalten eines zweiten Webservers (fragt nur die HTML-Datei ab und liefert seinerseits HTML- sowie CSS- und Grafikdateien) stünde auch offen, ist aber sicher etwas zu viel des Guten, auch wenn ich vermute, dass der Webserver im Messgerät eigentlich weniger als Webserver denn als rudimentäre Datenschnittstelle gedacht ist, Auslesen ja, Aufbereiten nein.

            Da hast du recht: Der Kunde will für das Anschauen der Messwerte im Browser ganz sicher nicht erst irgendwo einen Webserver installieren. Bei vielen ist das sicherlich schon alleine aus Sicherheitsgründen nicht möglich.
            Ich hatte auch mal dran gedacht, die Dateien einfach an eine feste, vom Internet erreichbare Stelle unserer Firmen-Homepage zu legen und in der HTML-Datei darauf zu verlinken, aber das ist auch nicht praktisch, denn dann dürfte sich an deren URL nie mehr was ändern.

            Nichtsdestotrotz ist aber festzuhalten, dass das alles nur ein Rumdoktern an den Symptomen ist. Die Ursache ist der Webserver, vielleicht gibt es da ja doch noch eine Änderungsmöglichkeit (und sei es die Bitte um Erweiterung an den Autor bzw. Hersteller).

            Änderungen werde ich selbst vornehmen müssen, weil der Hersteller nichts mehr dran macht. (Der Webserver wurde mit einer Hardware mitgeliefert - zur freien Verwendung, aber ohne Garantie. Wir haben schon mehrere Fehler gefunden.)

            Ich habe bei der Beschäftigung mit dem Problem übrigens auch festgestellt, dass der Webserver nur HTTP 1.0 verwendet und bei 1.1 das so sicherlich nicht aufgetreten wäre. Dafür würde ja nur 1 Verbindung benötigt, nicht für jede Datei eine. Aber das zu ändern, da müsste ich mich ja noch viel mehr in http & Co reinwühlen, was ich eigentlich nicht vorgesehen hatte.

            Vielen Dank nochmal für deine Antwort.  Gruß,

            Nano

            1. (im Firefox gibt es sie anscheinend nicht mehr, der IE hat sie unter "Temporäre Dateien" > Einstellungen).
              Hilf mir doch bitte nochmal: Wo genau finde ich die "Temporäre Dateien"? Entweder stelle ich mich zu blöd an oder im IE7 hat sich das mal wieder geändert gegenüber dem IE6.

              IE7 habe ich nicht; beim 6er ist die Einstellung in den Internetoptionen der Systemsteuerung zu finden (bzw. über den IE selbst), Karteireiter Allgemein, dort befindet sich im mittleren Abschnitt Temporäre Internetdateien rechts die Schaltfläche Einstellungen.

              Für die CSS-Daten ergäbe sich noch die Möglichkeit, sie in das HTML-Dokument einzubinden.

              Daran hatte ich auch schon gedacht, aber ich wollte mir eigentlich offenhalten, dass ich für Kunden die Stylesheet-Datei bei Bedarf anpassen kann. Über FTP kann ich (oder der Kunde) eine geänderte Datei hochladen.

              Gute Idee.

              Ich hatte auch mal dran gedacht, die Dateien einfach an eine feste, vom Internet erreichbare Stelle unserer Firmen-Homepage zu legen und in der HTML-Datei darauf zu verlinken, aber das ist auch nicht praktisch, denn dann dürfte sich an deren URL nie mehr was ändern.

              Halte ich auch nicht für praktikabel, schon alleine, weil ich nicht davon ausgehen würde, dass an jedem Arbeitsplatz der Internetzugang ständig verfügbar ist. Das mag bei eurer Kundschaft vielleicht fast immer der Fall sein, aber als Kunde Murphy würde es mich restlos nerven, wäre mein Messgerät vom Internet abhängig (selbst wenn es sich im Grunde immer noch nutzen ließe).

              Die Ursache ist der Webserver, vielleicht gibt es da ja doch noch eine Änderungsmöglichkeit

              Änderungen werde ich selbst vornehmen müssen, weil der Hersteller nichts mehr dran macht.

              Sieht IMHO so aus, als wenn du da nicht drumrum kommst (falls es keine Alternativprodukte gibt).

              Ich habe bei der Beschäftigung mit dem Problem übrigens auch festgestellt, dass der Webserver nur HTTP 1.0 verwendet und bei 1.1 das so sicherlich nicht aufgetreten wäre. Dafür würde ja nur 1 Verbindung benötigt, nicht für jede Datei eine.

              Ich würde mal sagen, dass auch dieses vom Browser abhängt. Die Option der Verbindungsanzahl pro Server ist bestimmt nicht nur wegen HTTP 1.0 noch in den Browsern vorhanden.

              1. (im Firefox gibt es sie anscheinend nicht mehr, der IE hat sie unter "Temporäre Dateien" > Einstellungen).
                Hilf mir doch bitte nochmal: Wo genau finde ich die "Temporäre Dateien"? Entweder stelle ich mich zu blöd an oder im IE7 hat sich das mal wieder geändert gegenüber dem IE6.
                IE7 habe ich nicht; beim 6er ist die Einstellung in den Internetoptionen der Systemsteuerung zu finden (bzw. über den IE selbst), Karteireiter Allgemein, dort befindet sich im mittleren Abschnitt Temporäre Internetdateien rechts die Schaltfläche Einstellungen.

                Danke für den Tipp - ich hatte an der falschen Stelle gesucht.

                Änderungen werde ich selbst vornehmen müssen, weil der Hersteller nichts mehr dran macht.
                Sieht IMHO so aus, als wenn du da nicht drumrum kommst (falls es keine Alternativprodukte gibt).

                Bei den Versuchen mit Expires habe ich festgestellt, dass die Änderungen an der HTTP-Bearbeitung leider nicht ganz trivial sind. Die Umstellung von HTTP 1.0 auf 1.1 kommt daher also auch nicht mehr in Betracht.

                Ich habe bei der Beschäftigung mit dem Problem übrigens auch festgestellt, dass der Webserver nur HTTP 1.0 verwendet und bei 1.1 das so sicherlich nicht aufgetreten wäre. Dafür würde ja nur 1 Verbindung benötigt, nicht für jede Datei eine.
                Ich würde mal sagen, dass auch dieses vom Browser abhängt. Die Option der Verbindungsanzahl pro Server ist bestimmt nicht nur wegen HTTP 1.0 noch in den Browsern vorhanden.

                Zitat aus Wikipedia:
                "Derzeit werden zwei Protokollversionen, HTTP/1.0 und HTTP/1.1 verwendet.
                Bei HTTP/1.0 wird vor jeder Anfrage eine neue TCP-Verbindung aufgebaut und nach Übertragung der Antwort wieder geschlossen. Sind in ein HTML-Dokument beispielsweise zehn Bilder eingebettet, so werden insgesamt elf TCP-Verbindungen benötigt, um die Seite auf einem grafikfähigen Browser aufzubauen.
                In der Version 1.1 können mehrere Anfragen und Antworten pro TCP-Verbindung gesendet werden. Für das HTML-Dokument mit zehn Bildern wird so nur eine TCP-Verbindung benötigt."
                Die max. Anzahl der Verbindungen hängt also von der Browser-Einstellung ab, aber ob er versucht, neue Verbindungen für die anderen Dateien zu öffnen, das hängt dann doch an der HTTP-Version. - HTTP 1.1 wäre dann scheinbar doch eine Lösung für mein Problem, aber wie weiter oben geschrieben steht der Aufwand nicht im richtigen Verhältnis zum Nutzen.

                Gruß,  Nano

                1. Zitat aus Wikipedia:
                  "Derzeit werden zwei Protokollversionen, HTTP/1.0 und HTTP/1.1 verwendet.
                  Bei HTTP/1.0 wird vor jeder Anfrage eine neue TCP-Verbindung aufgebaut und nach Übertragung der Antwort wieder geschlossen. Sind in ein HTML-Dokument beispielsweise zehn Bilder eingebettet, so werden insgesamt elf TCP-Verbindungen benötigt, um die Seite auf einem grafikfähigen Browser aufzubauen.
                  In der Version 1.1 können mehrere Anfragen und Antworten pro TCP-Verbindung gesendet werden. Für das HTML-Dokument mit zehn Bildern wird so nur eine TCP-Verbindung benötigt."
                  Die max. Anzahl der Verbindungen hängt also von der Browser-Einstellung ab, aber ob er versucht, neue Verbindungen für die anderen Dateien zu öffnen, das hängt dann doch an der HTTP-Version.

                  Nein, den Wikipedia-Text hast du da missverstanden, genau genommen könnte man seinen letzten Satz auf die Praxis bezogen sogar als falsch bezeichnen.

                  HTTP 1.1 hat gegenüber 1.0 den Vorteil, eine offene Verbindung weiter verwenden zu können. Der Vorteil ist leicht nachzuvollziehen: Wenn man mit jemandem telefoniert, spricht man ja auch in einem durch und legt nicht nach jedem Satz auf, wählt neu, sagt einen Satz, legt auf, wählt neu, usw.
                  Diese Eigenschaft bedeutet aber nicht, dass, wie der Wikipedia-Experte geschrieben hat, ein Browser bei HTTP 1.1 nun sämtliche x Objekte einer Seite der Reihe nach durch eine einzige Verbindung lädt, und schon gar nicht, dass, wie du vermutest, der Browser bei 1.0 mehrere parallele Verbindungen benötigen würde. Das erste ist in der Praxis falsch (siehe unten), das zweite zwei Paar Schuhe (denn auch bei 1.0 könnte man schön eine Verbindung nach der anderen aktivieren).

                  Der Grund für das parallele Laden liegt im subjektiv schnelleren Seitenaufbau. Angenommen, wir hätten eine Seite, bestehend aus dem HTML-Code, einer Javascript- und einer CSS-Datei, sowie drei Grafiken. Dem Browser werden einmal eine, einmal zwei gleichzeitige Verbindungen zugestanden. Der Ladevorgang sieht dann ungefähr wie folgt aus:

                  Max. eine Verbindung:
                  1 HTML Javascrip CSS GraA GrafiB GrafC

                  Max. zwei Verbindungen, HTTP 1.1:
                  1 HTML Javascript-------- GrafikC---
                  2      CSS--- GrafikA- GrafikB------

                  Max. zwei Verbindungen, HTTP 1.0:
                  1 HTML
                  2      Javascript--------
                  3      CSS---
                  4             GrafikA-
                  5                      GrafikB------
                  6                         GrafikC---

                  Die Gesamtladedauer bleibt immer konstant, sie hängt von Leitungsgeschwindigkeit und Gesamtdatenmenge ab. Im ersten Fall flutschen die gleichen Daten schneller durch die Leitung, da die Leitung ja nicht wie in den beiden letzen Fällen auf zwei Verbindungen aufgeteilt werden muss.
                  (Die kleinen Einsparungen von HTTP 1.1, die durch das Wegfallen des bei 1.0 ständigen Verbindungsauf- und abbaus entstehen, habe ich mal außen vor gelassen.)

                  Wie aber zu erkennen ist, blockiert im ersten Fall die große Javascript-Datei das Laden der CSS-Formatierung, während im zweiten bzw. dritten Fall die Formatierung früher übertragen und damit der Seitenaufbau subjektiv deutlich früher vollendet ist, und dies sogar noch trotz des besagten Geschwindigkeitsmankos bei gleichzeitigen Verbindungen. Während Fall 2 und 3 schon fast die erste Grafik durch haben, ist Fall 1 erst bei den CSS-Daten zu Gange.

                  Egal ist es dabei, ob nun HTTP 1.1 mit weiterverwendbaren Verbindungen oder HTTP 1.0 mit neu zu öffnenden Verbindungen zur Anwendung kommt. Der Vorteil von 1.1 liegt hier lediglich im geringeren Verwaltungsaufwand, da nur zwei statt sechs Verbindungen geöffnet werden müssen.

                  1. Du scheinst recht zu haben. Ich habe mir gerade nochmal den Ablauf beim Auslesen von Dateien aus eienm anderen Gerät mit einem HTTP/1.1-Webserver angeschaut. Zu diesem baut der Browser 3 Verbindungen auf. (Irgendwie hatte ich das anders in Erinnerung, ich hatte den Ablauf schonmal analysiert. Aber da muss ich mich wohl getäuscht haben.)

                    Was ich jetzt immer noch nicht ganz verstehe: Wer bestimmt denn die Anzahl der Verbindungen, welche zum Gerät aufgebaut werden? (Für den Fall, dass sie nicht durch Browser-Einstellungen begrenzt werden.) Vermutlich doch der Browser. Aber nach welchen Kriterien richtet er sich? Und: Kann ich das beeinflussen?

                    Wie würde denn in deinem Beispiel der Ladevorgang für HTTP 1.1 mit max. 10 Verbindungen aussehen? (Das wird mir zwar wahrscheinlich nicht bei der Lösung meines Problems weiterhelfen, aber dazulernen ist ja nie verkehrt.)

                    1. Was ich jetzt immer noch nicht ganz verstehe: Wer bestimmt denn die Anzahl der Verbindungen, welche zum Gerät aufgebaut werden? (Für den Fall, dass sie nicht durch Browser-Einstellungen begrenzt werden.) Vermutlich doch der Browser. Aber nach welchen Kriterien richtet er sich?

                      Vermutlich hat da jeder Browserhersteller seine eigene Strategie, und von der Struktur des HTML-Dokuments hängt das ja auch alles ab. Die ganz banale Variante wäre, schon während des Ladens des HTML-Dokuments für jede externe Quelle, die der Reihe nach im Dokument angesprochen wird, einfach eine weitere Verbindung zu öffnen, bis die Obergrenze erreicht ist.
                      Möglicherweise wäre es aber auch vorteilhaft, CSS-Daten den Vorrang zu geben und Grafiken hinten anzustellen, sprich Daten mit dem höchsten "Gestaltungswert pro Byte" zu bevorzugen. Grafiken könnte man auch nach vermutlicher Größe sortieren (aus den width- und height-Attributen des <img>-Elements), so dass kleine Navigationsbilder zuerst erscheinen und die bombastische Hintergrundgrafik zuletzt. Und nicht zu vergessen wäre, dass zu viele gleichzeitige Übertragungen den Sinn und Zweck konterkarrieren würden, da sie die Leitungen verstopfen.

                      Und: Kann ich das beeinflussen?

                      Meines Wissens nach nur im Quellcode des Browsers.

                      Wie würde denn in deinem Beispiel der Ladevorgang für HTTP 1.1 mit max. 10 Verbindungen aussehen?

                      Im einfachsten Fall (der nicht der beste sein muss, siehe oben) vielleicht so:

                      1 HTML Javascript--------
                      2      CSS---
                      3      GrafikA-
                      4      GrafikB------
                      5      GrafikC---

                      HTTP 1.1 hätte hier zwar auf den ersten Blick keinen Vorteil, allerdings wirst du, wenn du mal die Netzwerkverbindungen beobachtest, feststellen, dass der Browser mindestens eine Verbindung auch noch offen hält, wenn die Seite längst komplett geladen ist. Meist klickt man ja doch innerhalb der nächsten halben Minute die nächste Seite an, hier kommen die bleibenden Verbindungen von HTTP 1.1 dann wieder zum Tragen.

                      RFC 2616 hat zu dem Thema übrigens einen kurzen Abschnitt namens Persistent Connections.
                      Dort wird, nebenbei bemerkt, empfohlen, maximal zwei Verbindungen gleichzeitig in Betrieb zu haben, womit das Verhalten im obigen Beispiel nicht ganz nach Kochbuch wäre.

    2. Danke für die schnelle Antwort.

      Der Browser ist also der einzige Client, der überhaupt auf diesen Webserver zugreift?

      Ja, zumindest zu dem Zeitpunkt. (Man kann auch noch mit FTP und mit einer weiteren Anwendung auf das Gerät zugreifen, aber eben nicht, wenn schon jemand anderes auf das Gerät zugreift.)

      Ja, man kann idR. einstellen, wie viele Verbindungen maximal zu einer "Domain" bzw. auch IP aufgebaut werden sollen.
      Default im IE ist AFAIK 2, durch einen Registry-Eintrag kann man das aber hochsetzen. Also sollte runtersetzen evtl. genauso gehen(?).

      Ist das der Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\MaxConnectionsPerServer? Steht bei mir aktuell auf 0x0a (10).

      Und Opera/Firefox erlauben es m.W. direkt in ihrer Konfiguration, diese Zahl einzustellen.

      Da habe ich die Einstellungsmöglichkeit in about:config mittlerweile gefunden. Und siehe da, nach zurücksetzen von network.http.max-connections-per-server auf 1 funktioniert es wie gewünscht.

      Es hat bloß einen Haken: Dadurch verstelle ich die Anzahl der Verbindungen ja wohl leider generell für meinen Browser und verlangsame mir dadurch den Zugriff auf das "normale" Internet. Da habe ich vorher nicht dran gedacht.  :-(  Hat jemand eine Idee?

      Gruß,   Nano

  3. Hallo,

    ein Großteil meiner Fragen ist immer noch offen. Kann da jemand weiterhelfen?

    1. Gibt es irgendwo in den Browser-Einstellungen eventuell eine Möglichkeit, wo man den Browser anweisen kann, nur 1 Socket zu öffnen und/oder alle Dateien nacheinander abzuholen?

    Für Firefox habe ich die Einstellmöglichkeit network.http.max-connections-per-server in about:config gefunden - und das funktioniert auch. Aber für den IE war die Suche noch nicht errfolgreich. Die Änderung des Registry-Schlüssels HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\MaxConnectionsPerServer brachte nicht den gewünschten Erfolg - es wurde weiterhin versucht, mehrere Verbindungen zum Gerät aufzubauen.
    Aber letztendlich hilft mir diese Einstellung nicht weiter, da ich ja den Browser dann auch für alle anderen Verbindungen ausbremse. Von daher ist die Antwort auf diese Frage eher akademischer Natur.

    1. Gibt es irgendwo in den Browser-Einstellungen eventuell eine Möglichkeit, die Anzahl der Versuche für den Verbindungsaufbau hochzusetzen?

    Ich habe dazu leider nirgendwo was gefunden. Wenn man das von 3 auf z.B. 6 vergrößern könnte, ist das sicherlich eine gute Lösung.

    1. Hat jemand eine andere Idee für eine Lösung des Problems?

    ???

    Kleine Anmerkung: Ich kann erst wieder ab Montag antworten, aber trotzdem schon mal vielen Dank im Voraus für eure Lösungsvorschläge!

    Gruß,  Nano