Ergebnis 1 bis 2 von 2
  1. #1
    illCP ist offline Grünschnabel
    registriert
    21-12-2006
    Beiträge
    1

    Browsercache-Inhalt abfragen (Rollover-Preload)

    Hallo,

    ich habe ein kleines Problem:

    Ich arbeite momentan an einer PHP-basierten Seite, die sich mit diversen angehängten GET-Variablen (für den jeweiligen Inhalt) immer wieder selbst lädt - das ganze soll die Bookmarkbarkeit erhalten. Auf der Seite (bzw. im Navigationsbereich) gibt es einige Rollover-Buttons. Dafür werden per Javascript die MouseOver-Grafiken in Image-Objekte vorgeladen, um unschöne Verzögerungen beim MouseOver zu vermeiden.

    Und genau bei diesem Preload habe ich ein Problem: die index.php ruft sich bei jedem Link selbst wieder auf, dabei wird natürlich auch der JavaScript-Bereich incl. Preload neu geladen und ausgeführt. Auch wenn alle Grafiken insgesamt nur einige KB groß sind, führt das trotzdem zu deutlich spürbaren Verzögerungen beim kompletten Seitenaufbau - abgesehen davon, dass es eigentlich ziemlich überflüssig ist, jedesmal die Grafiken neu zu "puffern". Theoretisch sollten sich beim ersten Seitenaufruf (bzw. beim ersten Ausführen des Preloads) alle Grafiken im Browsercache befinden und keine Verzögerungen beim Rollover auftreten. In der Praxis funktioniert das leider nicht wirklich zuverlässig - es gibt z.T. immer noch Verzögerungen, hängt offenbar auch vom verwendeten Browser ab.

    Angeblich gibt es eine JS-Funktion, mit der sich überprüfen lässt, ob sich diese und jene Datei im Cache des Browsers befindet. Das würde mein Problem lösen - ich würde einfach vor das Preload eine Abfrage hängen, ob Bild xy schon im Cache ist - falls ja muss nichts mehr geschehen, falls nein müssen die Bilder vorm Seitenaufbau nochmal gepuffert werden.

    Das Problem ist nun, dass ich keine solche Funktion finde.... Gibt's sowas überhaupt ? Falls nicht, fällt vielleicht jemandem ein alternativer Lösungsansatz ein ?

    Vielen Dank schonmal im Voraus.


    Gruß, Christian
    Geändert von illCP (21-12-2006 um 14:04 Uhr)

  2. #2
    cybaer ist offline Kaiser
    registriert
    12-09-2006
    Beiträge
    1.338

    AW: Browsercache-Inhalt abfragen (Rollover-Preload)

    Zitat Zitat von illCP Beitrag anzeigen
    Ich arbeite momentan an einer PHP-basierten Seite, die sich mit diversen angehängten GET-Variablen (für den jeweiligen Inhalt) immer wieder selbst lädt - das ganze soll die Bookmarkbarkeit erhalten.
    Da gibt es aber deutlich besseres ...
    Und genau bei diesem Preload habe ich ein Problem: die index.php ruft sich bei jedem Link selbst wieder auf, dabei wird natürlich auch der JavaScript-Bereich incl. Preload neu geladen und ausgeführt.
    Na ja, wenn die Grafiken jedesmal gebraucht werden, ist es ja auch richtig so - und kein Unterschied zum Zustand mit x verschiedenen Seiten.
    Auch wenn alle Grafiken insgesamt nur einige KB groß sind, führt das trotzdem zu deutlich spürbaren Verzögerungen beim kompletten Seitenaufbau - abgesehen davon, dass es eigentlich ziemlich überflüssig ist, jedesmal die Grafiken neu zu "puffern".
    Stimmt. Aber wenn die Grafiken bereits gepuffert werden, dürfte der Zeitverlust gegen null gehen. Problematisch wird es, wenn die Grafiken nicht gepuffert werden. Aber dann nützt das "Cachen" ohnehin nix und ist kontraproduktiv.
    In der Praxis funktioniert das leider nicht wirklich zuverlässig - es gibt z.T. immer noch Verzögerungen, hängt offenbar auch vom verwendeten Browser ab.
    Eher von der Konfiguration des Browser - und auf die hast Du ja keinen Einfluß (vom eigenen Browser mal abgesehen ).
    Angeblich gibt es eine JS-Funktion, mit der sich überprüfen lässt, ob sich diese und jene Datei im Cache des Browsers befindet.
    Ist mir in 12 Jahren JS-Programmierung noch nicht untergekommen (OK, images gibt es erst seit 11 Jahren ).
    Falls nicht, fällt vielleicht jemandem ein alternativer Lösungsansatz ein ?
    Einige.

    1. Du könntest zuerst einmal dafür sorgen, daß die Grafiken ein Verfallsdatum ("expires") mitbekommen. Das beruhigt die Browser ungemein, weil sie, wenn im Zweifel, ggf. wenigstens einen bedingten Request senden (und also die Antwort des Servers abwarten, die da üblicherweise lautet: Nix geändert, benutzt die Daten, die du schon hast! ).

    Dafür bedarf es allerdings beim Apache mod_expires - und das ist AFAIK üblicherweise nicht installiert.

    Alternativ kannst Du die Grafiken via PHP ausliefern und den Expires-Header dann selbst mitsenden.

    2. Speichere den Zustand, daß das Script bereits einmal durchlaufen wurd (in einem Cookie, oder vielleicht sinnvoller, im Fensternamen: top.name="imgcached";). Und zu Beginn liest Du den Status aus, und abhängig davon wird vorgeladen oder nicht (damit werden dann auch nicht die Surfer durch unnützes Vorladen geärgert, die das Caching sowieso deaktiviert haben).

    3. Mozillas verfügen über eigene "Preloading-Anweisungen", die im HEAD stehen.
    Gruß, Cybaer

Ähnliche Themen

  1. Die etwas andere Navigation...
    Von Bitnets im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 11-02-2007, 22:58
  2. NUR "Druckbereich" festlegen
    Von Speedy19102000 im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 29-09-2006, 15:32
  3. Inhalt von Browser-Adresszeile abfragen
    Von tschroeder im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 13-04-2006, 06:52

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •