Ich baue eine SVG-basierte Visualisierung, die (teilweise) darauf beruht, viele Bilder in schneller Folge zu zeigen. Die Bilder können nicht schnell genug aus dem Netzwerk abgerufen werden, daher müssen sie vorab geladen werden.Die beste Möglichkeit, SVG-Bild-Tags vorab zu laden?
Mein Verständnis ist, dass SVG image
Tags nicht ordnungsgemäß cache, zumindest in den wichtigsten Browsern. So wird das Laden von Libraries und Techniken (zB this SO question) in JavaScript nicht funktionieren. (Ich konnte geschichteten HTML zu verwenden img
Tags greifen, sondern auch wegen der Besonderheiten meiner Anwendung, würde Ich mag so viel wie möglich zu reinen SVG-Stick)
Ich sehe zwei Möglichkeiten:
- die Codierung PNG-Bilddaten als base64, Speichern im Speicher als Strings und Verwenden der Strings zum iterativen Auffüllen von
image
Tags unter Verwendung vondata:image/png;base64
. - Layering viele SVG-Gruppen übereinander mit allen außer einem auf oder
visibility: hidden
gesetzt und die entsprechende Gruppe iterativ enthüllte. Ich glaube jedoch, dass es nicht möglich sein wird, programmatisch zu erkennen, dass alle Bilder das Vorladen beendet haben.
Was ist der beste Weg, um die Bilddaten vorab zu laden? Vielleicht habe ich eine einfachere Option verpasst.
Muss dein vis sein * alle * SVG? Ist dies nicht der Fall, können Sie die Bilder möglicherweise vorab als HTML laden und dann auf dem Bildschirm überlagern ... Es funktioniert nicht, wenn Sie sie vollständig integriert haben, z. Clippfade anwenden. – nrabinowitz
Ja, wie ich in meiner Frage erwähne, würde ich viel lieber wenn es alles SVG wäre. (Andernfalls würde ich meinen Viz in zwei SVG-Ebenen aufteilen, so dass die Bildebene zwischen ihnen geschichtet wäre) –