Versteckte Frames für clientseitiges Caching

In einem früheren Artikel wurde eine Browser-basierte Anwendung beschrieben, die Objekte im Voraus in versteckte Frames lädt, um die Performance der Anwendung zu verbessern. Bei diesen Objekten handelte es sich um Auswahl-Boxen, Grafiken und Java Swing-Applets. Einmal geladen, wurden diese Objekte aus dem versteckten Frame in einen sichtbaren Frame kopiert, wo sie wie jedes andere Objekt funktionierten. Das Laden im Voraus verbesserte zwar deutlich die Performance, aber der Vorgang selber dauerte fast fünf Minuten, und das bei Ethernet-Geschwindigkeit. Mit einem normalen Modem hätte die Zeit gereicht, hinaus zu gehen um Kaffee und Kuchen zu besorgen.

Das Laden von Objekten im Voraus hat sicher seine Vorteile, aber diese spezielle Implementierung hatte doch ihre Macken. Also entschied ich mich, die Sache von einer anderen Seite anzugehen. Anstatt die Objekte im Voraus zu laden, speicherte ich alle Objekte, die mehr als einmal verwendet würden, in einem Cache zwischen. Und anstelle eines eigenen versteckten Frames für jedes auf der Client-Seite zwischengespeicherte Objekt benutzte ich einen versteckten Frame mit mehreren mit diesem verknüpften Inline-Frames. Dadurch hatte ich die Möglichkeit, über das DOM-Objekt Frames Collection zu sehen, welche Elemente bereits im Cache waren. Wenn z.B. der Name des versteckten Frames Dwarfs ist, wäre die Frames Collection top.Dwarfs.frames. Um einen Inline-Frame namens Grumpy zu finden, würde man eine JavaScript-Funktion wie in Listing A verwenden.

Die Funktion inlineFrame findet einen vorhandenen Inline-Frame, aber was ist, wenn der Inline-Frame gar nicht existiert und Null zurückgegeben wird? Nun, wenn es den Frame noch nicht gibt, müssen wir ihn eben erstellen.

Auf den ersten Blick scheint das dynamische Erstellen eines Inline-Frames eine leichte Sache. Das stimmt grundsätzlich, andererseits gibt es dabei auch ein paar unerwartete Probleme. Der Anfang ist recht einfach, aber man muss den document.readyState des Inline-Frames überprüfen, um herauszubekommen, wann er fertig ist. Und hierbei kann es Schwierigkeiten geben.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Google schließt Zero-Day-Lücke in Chrome

Von ihr geht ein hohes Risiko aus. Angreifbar sind Chrome für Windows, macOS und Linux.

1 Tag ago

KI erkennt Emotionen in echten Sportsituationen

Forschende des KIT haben ein Modell zur Emotionsanalyse entwickelt, das affektive Zustände ähnlich genau wie…

2 Tagen ago

Ermittlern gelingt weiterer Schlag gegen Ransomware-Gruppe LockBit

Sie decken die Identität des Kopfs der Gruppe auf. Britische Behörden fahnden mit einem Foto…

3 Tagen ago

Apple stellt neuen Mobilprozessor M4 vor

Er treibt das neue iPad Pro mit OLED-Display an. Apple verspricht eine deutliche Leistungssteigerung gegenüber…

3 Tagen ago

Cyberabwehr: Mindestens zwei kritische Vorfälle pro Tag

Davon entfällt ein Viertel auf staatliche Einrichtungen und 12 Prozent auf Industrieunternehmen.

3 Tagen ago

Tunnelvision: Exploit umgeht VPN-Verschlüsselung

Forscher umgehen die Verschlüsselung und erhalten Zugriff auf VPN-Datenverkehr im Klartext. Für ihren Angriff benötigen…

3 Tagen ago