Preload, Browsercache und Popups

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Preload, Browsercache und Popups

    Hallo liebe Community,

    ich habe schon gegoogelt und in diversen Foren gesucht, aber leider habe ich noch keinen Plan was auf meiner Seite falsch läuft.

    Ich brauche eigentlich auch keine fertige Lösung out of the box, sondern ein wenig Grundlagenwissen.

    Folgendes Verhalten:

    dhtml/javascript preloader läd 340 gifs ins Browsercache, alles wunderbar, die Seite wird dann angezeigt , was auch ok ist.

    Surfe ich nun 5min nicht auf der Seite werden die Grafiken wieder neu geladen, was ich nicht verstehe da Sie alle im Cache sind.

    Was mich aber noch mehr wundert, ist die Tatsache, dass wenn ich nach erfolgreich geladenen Grafiken auf derselben Seite ein Popup oder einen hyperlink->auf z.B. target=blank mache, werden die Grafiken auch wieder reingeladen...

    ich benutze als preload ein rudimentäres javascript, also dass was es überall gibt, in Form von einem "image" - array welches bei laden der Seite abgearbeitet wird und eine prozentuale anzeige mittels dhtml/js, also reines ausrechnen wieviele Grafiken im array sind und welche schon geladen wurden. im (c) vom preload steht:
    // Simple DHTML Image Loader
    // by Glen Murphy. Script located at http://bodytag.org/

    meine frage ist warum läd mein Browser innerhalb von 20sec die grafiken neu in sein cache, ist das normal, wenn der focus auf ein anderes fenster gesetzt wird ? kann man das beeinflussen ?

    also im Browser selber ist das cache im standardmodus wie bei Otto-Normal-Surfer (automatisch), klar das ich hier beim client nix beeinflussen kann.

    Wer es mal testen möchte kann es sich gerne anschauen:
    link

    -> Bezug auswählen -> preload -> anzeige

    -> nachmal klicken auf bezug -> kein preload -> sofortige Anzeige ( je nach Rechenleistung der eigenen CPU )

    -> nun auf den Hilfelink mal klicken -> wieder schliessen -> nochmal auf auswählen und *zack* die Grafiken werden erneut ins cache geladen ohne preload ( der ist in dem Moment inaktiv ) aber die ganzen Grafiken sind wenn man es schnell macht maximal 30 sekunden im cache und die sind auch da ( jedenfalls bei mir in den Temp.Internetfiles )

    also mir gehts eher um die Frage warum dieses Verhalten, wie die Lösung, die kann ich mir wahrscheinlich dann erarbeiten wenn ich weiß woran es liegt, bzw was sich der Browser dabei denkt.

    Alle scripte hier zu posten wäre zu viel, aber ich stelle gerne die Codefragmente zur Verfügung. ich denke aber Ihr wisst schon ganz genau woran das liegt.

    Ich bedanke mich schonmal im vorraus für alle Mühen die ich verursache.

    Viele Grüsse Andre

  • #2
    340 gifs
    ??? Du machst irgendwas falsch ~~
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      ok... mach ich wahrscheinlich.

      Vergiss mal die 341 Dateien, darum geht es doch gar nicht, ich finde die eigentliche Frage interssanter.

      ich frage mal anderst : Warum läd ein Browser die zuvor mit einem skript vorgeladenen Grafik-Dateien einer Seite jedes mal nach wenn man ein popup aufmacht, oder ein neues Fenster per hyperlink, aber wenn man das nicht macht, kann man ewig auf der Seite surfen ohne das der Browser dieses Verhalten an den Tag legt(neuladen).

      Besser ?

      Gruß Andre
      Zuletzt geändert von strassencoder; 11.09.2007, 22:41.

      Kommentar


      • #4
        Schon mal ausprobiert den Platz für den Browsercache höher zustellen? Dann hättest du zumindest eine Erklärung. Ist ähnliches zu beobachten wenn du zum Beispiel nur 10 Bilder lädst?
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          Hallo,

          ob es so mit 10 dieser Grafiken ist, kann ich leider nicht sagen, da es viel zu schnell geht. Wenn man 10 grosse Dateien nimmt habe ich das Gleiche. Ich weiß das man eigentlich nicht soviele gifs nimmt, aber erst da ist mir das Verhalten bewusst geworden. Das schöne daran ist, man kann es nachvollziehen. Mit allen IE´s ( 5.5, 6.x, 7.x ).

          Den Platzbedarf meines lokalen Browser-Caches zu erhöhen, um das Verhalten des Browsers - eines ich nenne es mal eines "Client-PCs" - zu beeinflussen , scheint mir ein Scherz.

          Da ich mich parallel versuche durch viel googeln und probieren mein Problem zu lösen, lösche ich nach jedem Versuch mein cache, und ich seh was der Browser so mit seinem cache macht.

          Mir kommt es so vor: wenn sich der Focus ändert, und man das "kind"-Fenster schliesst, um weiter zu surfen, läd der Browser nach.

          Gruß Andre

          Kommentar


          • #6
            Mir kommt es so vor: wenn sich der Focus ändert, und man das "kind"-Fenster schliesst, um weiter zu surfen, läd der Browser nach.
            Das wird dann wohl so im IE implementiert sein, das bei einem neuen Fenster der Cache nicht / nicht korrekt verwendet sondern neu geladen wird. Ich denke, da wirst du nichts dran schrauben können!

            BTW: Du solltest die Scrollleiste auf der Seite nicht deaktivieren, ich kann mir gar nicht die ganze Seite ansehen!

            Kommentar


            • #7
              Dass das Caching vom IE alles andere als intelligent ist, brauchen wir hier glaub ich nicht zu diskutieren...

              es gibt aber gewisse META oder header, die zumindest versuchen können, den IE auf die richtige Bahn zu lenken, und ihm zu sagen, wie er die daten im chache behandeln soll...

              auch interessant ist, ob die bilder vom server so kommen, wie sie sind, und ob der "zuletzt geändert" header stimmt...

              der IE als Musterbeispiel, wie man einen Browsere nicht programmieren sollte, ist allerdings auch bei korrekter Servereinstellung immernoch hin und wieder "schlauer" als der benutzer und tut, wozu er gerade Lust hat...

              google mal nach header, META, pragma, IE, cache, cache-control

              oder einer Auswahl davon... dann wirst du schnell sehen, wie ich das meine... bedenke: 50% der beschriebenen Anleitungen sind Glückstreffer und funktionieren trotz umfangreicher Tests der Autoren nicht zuverlässig... eine patentlösung, die immer funktioniert, ist mir nicht bekannt...

              greetz, high
              Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
              When everything else fails, manipulate the data...
              Beschriftungen / Großformatdruck / Werbemittel

              Kommentar


              • #8
                hallo an alle,

                Danke das Ihr mitüberlegt.

                IE´s Cache ist wirklich nicht gut, und das Problem scheint nur im IE zu sein, Mozilla läd an der Stelle nicht nach sondern nimmt die Grafiken aus seinem Cache. ( Punkt für Mozilla )

                Bisherige Lösungsansätze:

                -per php header Befehl -> last modified ausgeben -> hat nichts geändert
                auch sowas wie pragma oder sowas:

                header("HTTP/1.0 304 Not Modified");

                brachten leider nicht den Erfolg.

                -die Popups zu "Tooltips" machen, ginge, ist aber eher ein workaround statt ner Lösung da dann nochmal 341 zusätzliche Grafiken geladen werden.

                - die 341 Grafiken ( und es werden leider noch mehr ) per httpRequest asynchron laden. das scheint mir im Mom. der säuberste Lösungsansatz

                Dummerweise ist halt für mein Projekt der IE der wichtigste Browser, gefolgt vom Mozilla. Das Clientel der Seite sind laut Server-Logs fast 90% IE´s, 5% MOzilla und 5% suchmaschinenbots...

                Somit ist der IE bei dieser Seite das Maß der Dinge.

                Hat jemand noch eine Idee oder einen Erfahrungswert ?

                Gruß Andre

                btw: was ist eigentlich das gegenteil zu cache-control: no-cache ? cache-control: cache ?
                Zuletzt geändert von strassencoder; 12.09.2007, 10:15.

                Kommentar


                • #9
                  hast du mal versucht, die header nicht nur für die seite, sondern auch für die bilder einzeln mitzuschicken?

                  also n kurzes script, dass einfach den header sendet und dann das bild durch schiebt...

                  ansonsten ... no plan...

                  greetz, high
                  Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                  When everything else fails, manipulate the data...
                  Beschriftungen / Großformatdruck / Werbemittel

                  Kommentar


                  • #10
                    Hallo Highrise,

                    das habe ich noch nicht versucht, wobei ich auch ehrlich gesagt nicht weiß wie so ein script aussehen muss, damit es für die Bilder einen Extra-header mitsendet. Meinst du das man "einfach" gesagt, für jedes Bild eine "seite" generiert, wenn alle 341 "seiten" dann geladen wurden -> alles anzeigen. Rein interssehalber noch: oder meinst du per php header() Befehl , wie müsste der dann lauten ? oder nach was kann ich googlen

                    Ich bin mittlerweile der Meinung, dass man das cache beim IE vergessen kann, und man es auch nicht einfach so "rumbefehlen" kann wie man es gerne hätte.

                    Ich habe die ganze Geschichte gerade in eine art AJAX - httprequest Methode verpackt, nun habe ich die 341 grafiken in 5 Teile gesplittet was die Ladezeit deutlich verkürzt - popups werden als tooltips angezeigt, womit man einen workaraound für das dämliche IE cache hat. Natürlich werden die Tooltips dann auch mittels httpsendrequest-Methode erst geladen wenn gebraucht. somit habe ich den Quelltext immernoch schön schmal gehalten.

                    Ich bin froh vor ein paar Wochen hier im Forum auf "die harte Tour" mal diesen httpsendrequest gelernt bekommen zu haben. ist eigentlich ne feine Sache.

                    Wie man den IE trotzdem dazu bringt sein cache zu benutzen würde mich aber immernoch interssieren.

                    Auf allen gegoogleten Seiten kann man immer nur das Gegenteil lesen, also das man das cache nicht benutzt und immer eine aktuelle Seite hat...

                    Gruß Andre
                    Zuletzt geändert von strassencoder; 12.09.2007, 12:54.

                    Kommentar


                    • #11
                      um für jedes bild einen eigenen header zu senden, kannst du ein php-script verwenden...

                      ganz zu beginn sollten dann zwei header() aufrufe kommen...

                      einer für den content-type, der dem browser mitteilt, das bilddaten und nicht etwa text folgt, der zweite für das caching (wie gesagt, welcher header da funktioniert hab ich auch noch nicht raus)...

                      danach kannst du einfach das bild mit readfile('bilddatei.gif') durchschieben....

                      sinnigerweise sollten die bilder dann in einem eigenen verzeichnis zusammen mit dem script liegen.

                      dazu gehört dann noch eine .htaccess, die die anfragen umschreibt, so dass, wenn der browser nach meinbild.gif in diesem verzeichnis fragt, in wirklichkeit z.B. phpscript.php?bild=meinbild.gif geladen wird...

                      der ablauf wäre dann so etwa:
                      der IE will meinbild.gif laden und sendet eine anfrage an dern server
                      der server denkt sich "halt stop, da ist ja ne rewrite rule" liefert stattdessen phpscript.php?bild=meinbild.gif
                      das script geht dann hin, und sendet passende header und liefert anschließend die in "bild" angegebene Datei... (ggf. kann man auch einfach dann ein not modified senden, und dem browser das bild völlig vorenthalten... dazu müsste man allerdings noch ein paar infos vom request-header auswerten, um sicher zu sein, dass er das bild bereits im cache hat.)

                      greetz high
                      Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
                      When everything else fails, manipulate the data...
                      Beschriftungen / Großformatdruck / Werbemittel

                      Kommentar

                      Lädt...
                      X