Viele Bilder im Browser-Cache
Max Smily
- browser
Hallo Forum,
ich erstelle gerade ein Javascript-Spiel. Es gibt mehrere anklickbare Objekte, die je 6 Zustände haben. Jeder Zustand wird durch ein Bildchen dargestellt. Durch onClick() wird die src des Bildes geändert. Es gibt 24 Objekte mit je 6 Bildern. Der Browser muss also 144 Bilder im Cache behalten, damit die Bildwechsel flüssig ablaufen.
Alle Bilder werden beim Programmstart durch ein JavaScript in den Cache geladen.
In der Praxis "vergessen" die Browser aber leider diverse Bilder. Die Bilder werden nicht kontinuierlich ausgetauscht.
Meine Frage: Sind 144 Bilder (je ca. 10 Kb) zuviel für den Cache? Wird der Cache oder irgendwelche JavaScript-Bereiche eventuell durch andere Prozesse "überschrieben"? Durch das Script werden jedenfalls keine nötigen Variablen während des Ablaufs überschrieben. Gibt es irgendwelche Cache-Parameter, die ich mit Meta-Tags aktivieren sollte?
Ich teste auf Mozilla 1.1 und IE 6 unter Win98.
Max
Hi!
Um so ein Spiel zu erstellen ist vielleicht - trotz allem wider - Flash die geeignetste Form, denn da gibt es hundertprozentiges Vorladen und einfaches Wechseln. Ausserdem sieht es dann auf jedem Webagenten, der natürlich das Macromediaplugin haben muss, gleich aus, ausserdem kannst du dann vielleicht noch ein wenig aufkünstlern.
Denn dies liegt daran, dass der User sich einstellen kann, wieviel kb er sich überhaupt in den Cache laden will und wenn er nur 50 kb eingestellt hat, dann wird es ziemlich nervig für ihn ständig neue Bilder zu laden.
Das Hauptargument dagegen ist wohl, dass viele garkein Flash aktiviert haben, aber viele haben auch kein Java Script an, also ist dies für ein Spiel, was wohl nicht wichtig für Informationen sein wird ;), verzeibar.
Tschüss!
Hi Max,
Es gibt mehrere anklickbare Objekte, die je 6 Zustände haben. Jeder Zustand wird durch ein Bildchen dargestellt. Durch onClick() wird die src des Bildes geändert. Es gibt 24 Objekte mit je 6 Bildern. Der Browser muss also 144 Bilder im Cache behalten, damit die Bildwechsel flüssig ablaufen.
muß das sein? Hast Du nicht die Möglichkeit, verschiedene Zustände anders darzustellen?
(Beispielsweise durch eine Hintergrundfarbe eines HTML-Tags und ein transparentes Bild davor - das könnte schon mal Faktor 6 an Bildern einsparen.)
Meine Frage: Sind 144 Bilder (je ca. 10 Kb)
Uh - wieso müssen die Bilder derartig riesig sein? Wenn Du jetzt "200 bytes pro Bild" gesagt hättest ... dann wärest Du immer noch in HTTP-Headern ertrunken. Aber es wäre Faktor 10 weniger.
zuviel für den Cache?
Die Cache-Größe ist in jedem mit bekannten Browser benutzerdefinierbar - insbesondere also auch abschaltbar. Deine Frage ist daher nicht in allgemeiner Form beantwortbar.
Wird der Cache oder irgendwelche JavaScript-Bereiche eventuell durch andere Prozesse "überschrieben"?
Ich vermute eher, daß das Inferno von 144 HTTP-Requests in kurzer Zeit dazu führen wird, daß der eine oder andere dieser Requests (die sich ja auch noch die ohnehin knapp bemessene Übertragungsbandbreite teilen müssen - und das bei Deinen "fetten" Bildern) auf einen timeout läuft. Some loss is always.
Gibt es irgendwelche Cache-Parameter, die ich mit Meta-Tags aktivieren sollte?
Ja, gibt es - aber Deinen "initial load" bekommst Du damit nicht schneller.
Ich denke, Du mutest einem normalen Anwender mit Modem einfach zuviel zu.
1,4 MB Daten per ISDN mit ca. 7 kB/Sekunde zu übertragen, das dauert ... und dauert ... und dauert ... äh, 200 Sekunden, also dreieinhalb Minuten.
Wieviel Spaß macht das Spiel denn, um eine solche Wartezeit zu rechtfertigen?
Viele Grüße
Michael
Danke für deine Ausführungen.
Ich hab gleichmal die Grafiken überarbeitet und sie auf 3 - 4 KB runteroptimiert. Dein Vorschlag mit den "vorgeschalteten" transparenten Bildern werde ich auch berücksichtigen und so wohl noch mehr Bytes sparen.
Ursprünglich hab ich ja geplant, dass sich die Spieler meines Spiels die Grafiken vorher downloaden und lokal speichern.
Übrigens scheint mein "Cacheproblem" hauptsächlich am Mozilla 1.1 gelegen zu haben. Nach dem Update auf 1.2.1 tritt das "Vergessen" kaum noch auf...