Hallo pl,
Für Binaries ist window.btoa() absolut unbrauchbar.
Einverstanden. Aber welche Binaries wirst Du denn hier verwalten müssen? Es geht um Wikisource - Text. HTML/CSS/JS Beispiele - Text. Eventuell noch Bilder: Die kann man isoliert b64 codieren und einbetten, und dann bei Bedarf decodieren.
Die Binaries, die Du im Moment hast, sind Längenangaben zu E, A und V - die brauchst Du nicht wenn Du dein EAV-Modell als JSON stringifizierst.
Ansonsten sind doch 2 Sekunden zum Download einer kompletten Offline-Version nicht zu lang oder!?
Es ist aber nicht komplett und wird darum nicht bei 2s bleiben. Ich habe mir eine echte Offline-Version deiner Seite gezogen und darin Date.now() Ausgaben gemacht;
startHead to startBody : 9
startBody to scriptsLoaded: 25
scriptsLoaded to enterInit: 77
enterInit to atLoad : 62
atLoad to gotText : 4
gotText to decoded : 1053
decoded to eavBuilt : 175
eavBuilt to ready : 16
startHead ist eine Zeitmarke, die ich in dem Script setze wo Du die SID setzt. startBody ist in einem eigenen Script direkt hinter dem <body> Tag scriptsLoaded in in einem eigenen Script direkt VOR dem Data-Block enterInit ist am Anfang deines Init-Scripts, direkt vor der Definition von loadbody atLoad ist am Anfang des onload-Handlers gotText zwischen den Aufrufen von .text() und .decode() decoded zwischen den Aufrufen von .decode() und .buffer2eav() eavBuild ist nach der Rückkehr von buffer2eav ready ist am Ende des onload-Handlers, vor dem pretext Aufruf.
Die b2a Decodierung benötigt also 3/4 der Laufzeit. Es könnte sich lohnen, für deine EAV über eine nicht-binäre Codierung nachzudenken.
Rolf
sumpsi - posui - clusi