Alain: warum lädt der IE5.x die onmouseover jpgs jedesmal?

Hallo,
Ich versteh das nicht,obwohl ich ein preload script habe und die bilder längstens im cache sind,lädt der IE die bilder jedesmal vom server beim überfahren der bilder mit mouseover.
Wenn ich die seite kurz verlasse und den back button betätige,dann kommen die onmouseover bilder direkt vom cache(als zügig).
Bei NS4,NS6,Moz...wirds korrekt gemacht.
Ist das grundsätzlich nur so beim IE oder gibts da eine andere lösung dafür um dem IE mitzuteilen,dass er auf jedenfall den cache benutzte soll?
Grüsse
Alain

  1. Hallo Alain,

    Ist das grundsätzlich nur so beim IE oder gibts da eine andere lösung dafür um dem IE mitzuteilen,dass er auf jedenfall den cache benutzte soll?

    m. E. besteht dieses beschriebene Verhalten grundsätzlich, da es von den gesetzen Optionen des Nutzers abhängt, ob ein Browser immer, beim ersten mal oder nie eine Prüfung auf die referenzierten Dateien vollziehen soll.

    Gruß aus Berlin!
    eddi

    1. m. E. besteht dieses beschriebene Verhalten grundsätzlich, da es von den gesetzen Optionen des Nutzers abhängt, ob ein Browser immer, beim ersten mal oder nie eine Prüfung auf die referenzierten Dateien vollziehen soll.

      Das wage ich, lieber Eddi, ernsthaft anzuzweifeln. Ich brauche auf meiner Seite einen etwas ausgebauten Preloader dieser Form:

      function preload()
      {
      count=0;
      image=new Array ('bild1.jpg','bild2.gif','etcetera.gif');
      picture=new Array(image.length);
      for (i=0;i<image.length;i++)
      {
      picture[i]=new Image();
      picture[i].onload=loadcheck;
      picture[i].src=image[i];
      }
      }

      function loadcheck()
      {
      count++;
      if (count>0&&count<image.length)
      {
      display="So etwas wie loading...";
      document.getElementById("Id").innerHTML=display;
      }
      else jetztkannbeginnenwasbeginnensoll();
      }

      Und damit ist das für den IE wie für die anderen Browser kein Problem. Ach, übrigens: Etwas nach unten scrollen, und dies wäre auch im Posting https://forum.selfhtml.org/?t=97460&m=593230 zu finden gewesen.

      Herzlich, twb

      1. Das wage ich, lieber Eddi, ernsthaft anzuzweifeln. Ich brauche auf meiner Seite einen etwas ausgebauten Preloader dieser Form:

        Ich hasse es ja solch lieb Worte durch Pedanz zu zerstören; dennoch auch Dir ein gesundes neues Jahr.

        Dieses von Alain beschriebene Verhalten habe ich einmal bei einem Preloader und dem IE beobachten müssen und Du darfst zwar zweifeln, es ist aber an der Stelle nicht notwendig. Als Beweis habe ich folgendes gerade noch mal durchprobiert:

        ######################### index.html #########################

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
         "http://www.w3.org/TR/html4/strict.dtd">
        <html>
        <head>
        <title>test</title>
        <script type="text/javascript">
        function preload()
         {
         count=0;
         image=new Array ('index.php');
         picture=new Array(image.length);
         for (i=0;i<image.length;i++)
          {
          picture[i]=new Image();
          picture[i].onload=loadcheck;
          picture[i].src=image[i];
          }
         }

        function loadcheck()
         {
         count++;
         if (count>0&&count<image.length)
          {
          display="So etwas wie loading...";
          document.getElementById("Id").innerHTML=display;
          }
         else alert('fertig');
         }
        </script>
        <style type="text/css">
        a:link  {background:#ddd}
        a:hover {background:url(bild.php)}
        </style>
        </head>
        <body onLoad="preload()">
        <div id="ID"></div>
        <div><a href="#">eddi</a></div>
        </body>
        </html>

        ########################## bild.php ##########################

        <?php
        header('Content-Type: image/jpeg');
        readfile('eine.jpg');
        $dat=fopen('test.txt','a');
        fputs($dat,$_SERVER['HTTP_USER_AGENT']."\n");
        fclose($dat);
        ?>

        ###################### IE Einstellungen ######################

        Internetoptionen ->
        Registerkarte Allgemein ->
        Temporäre Internetdateien ->
        Einstellungen ->
        Bei jedem Aufruf Prüfen

        IE 6 SP2

        ##############################################################

        Es wird bei jedem "Hover"-Effekt die Datei neu vom Server verlangt. Das ist zwar grundsätzlich etwas anderes, als onMouseover, jedoch scheint es mir anhand Alains Beschreibung auch dafür zutreffend zu sein.

        Gruß aus Berlin!
        eddi

        1. In Berichtigung:

          function preload()
          {
          count=0;

          image=new Array ('bild.php');

          picture=new Array(image.length);
          for (i=0;i<image.length;i++)
            {
            picture[i]=new Image();
            picture[i].onload=loadcheck;
            picture[i].src=image[i];
            }
          }

        2. Hallo eddi

          a:hover {background:url(bild.php)}

          Es wird bei jedem "Hover"-Effekt die Datei neu vom Server verlangt. Das ist zwar grundsätzlich etwas anderes, als onMouseover, jedoch scheint es mir anhand Alains Beschreibung auch dafür zutreffend zu sein.

          Könnten diese Cache-Probleme eventuell daher rühren, dass als Hintergrundbild
          kein übliches Grafikdateiformat sondern eine PHP-Resurce angefordert wird.

          IEs neigen bekanntlich dazu, oftmals den Datei-Extensionen eine viel zu große
          Aufmerksamkeit zu widmen.

          Auf Wiederlesen
          Detlef

          --
          - Wissen ist gut
          - Können ist besser
          - aber das Beste und Interessanteste ist der Weg dahin!
          1. Hallo Detlef,

            a:hover {background:url(bild.php)}

            Könnten diese Cache-Probleme eventuell daher rühren, dass als Hintergrundbild
            kein übliches Grafikdateiformat sondern eine PHP-Resurce angefordert wird.

            IEs neigen bekanntlich dazu, oftmals den Datei-Extensionen eine viel zu große
            Aufmerksamkeit zu widmen.

            davon weiß ich selbst nichts. Daß der IE sich bei dem geschildertem Hover-Effekt strikt an seine Konfiguration hält, ist mir bei einem privaten Webauftritt aufgefallen. Dabei handelte es sich um PNGs. Das PHP-Script ist nur zum Einsatz gekommen, weil ich in einem lokalem Netzwerk mit sleep() arbeitete, um das Laden auch visuell wahrnehmen zu können.

            Gruß aus Berlin!
            eddi

        3. Ich hasse es ja solch lieb Worte durch Pedanz zu zerstören; dennoch auch Dir ein gesundes neues Jahr.

          Büddebüdde. Aber wenn schon Pedanterie, dann bitte nicht "Pedanz". Das gesunde Jahr wünsche ich Dir selbstredend ebenso.

          ###################### IE Einstellungen ######################

          Internetoptionen ->
          Registerkarte Allgemein ->
          Temporäre Internetdateien ->
          Einstellungen ->
          Bei jedem Aufruf Prüfen

          Ich schätze: _Hier_ liegt der Hund begraben. "Bei jedem Aufruf prüfen" _verlangt_ ja gerade den Reload der Grafiken. Check auf "Automatisch" löst das Problem. Ist das gut so, oder ist das gut so?

          Herzlich, twb

          1. hi twb,

            Internetoptionen ->
            Registerkarte Allgemein ->
            Temporäre Internetdateien ->
            Einstellungen ->
            Bei jedem Aufruf Prüfen

            Ich schätze: _Hier_ liegt der Hund begraben. "Bei jedem Aufruf prüfen" _verlangt_ ja gerade den Reload der Grafiken. Check auf "Automatisch" löst das Problem. Ist das gut so, oder ist das gut so?

            das genau war das problem ;-) ich hatte die option jedesmal prüfen eingestellt ...aber dennoch finde ich es nicht gerade internet freundlich,wenn der IE dann gewisse kopfdaten
            z.B. <meta http-equiv="Cache-Control" content="max-age=2000">
            <meta http-equiv="expires" content="3000">
            ignoriert,als gäbs die seite nicht.
            Dein script version,wenn auch nicht ganz identisch mit meinem funtzt tatsächlich sehr gut,schade nur,dass Du nur document.getElementById nutzt und somit andere browser ausschliesst.
            sowas wie
            var DOM=false, IE=false, NS4=false;
            if (document.getElementById&&!document.all) {
            DOM=true;
            }
            else if (document.all) {
            IE=true;
            }
            else if (document.layers) {
            NS4=true;
            }
            wäre empfehlenswert.
            Gruss
            Alain