Hallo Marc,
erst mal grundsätzlich, hast du alle Möglichkeiten abgegrast das entzippen zu deligieren? document.open() oder xmlhttprequest oder was auch immer einen MimeType als Argument mitnimmt, mit sowas wie "x-zip-encodig" (?) oder ähnlichem aufzurufen?
Ansonsten ein plugin nutzen? Java-apletts oder flash könnten sowas eingebaut haben, und erlauben Kommunikation mit JS
Da das Format der Daten ungefähr bekannt ist (Folge von Wörtern, die alle kleingeschrieben sind) könnte man den Wörtern Indizes verpassen. Je häufiger das Wort vorkommt desto kleiner die Zahl, und dann wird der String als Array von Zahlen abspeichert.
Was du da beschreibst hört sich sehr nach einer Huffmann-Codierung an, blos dass die Wörter das Alphabet sind.
Beispiel: Nur 3 Wörter, zu 50% "Eins" (0) zu je 25% "Zwei" (10) und "Drei" (11), dann könntest du die geklammerten Bitfolgen nehmen
0110010 wäre also Eins Drei Eins Eins Zwei
Also 1,5 Bit statt 4 Byte pro Wort.
wie du siehst wären das aber nur 7 Bit und du müsstest shiften! Um dieses zeitintensive shiften eventuell ganz zu vermeiden könntest du mit geshiftetetn Tabellen a 256 Einträge auskommen.
Erster Schritt:
Tab[0][01100101]=> Decode+="Eins Drei Eins Eins Zwei" Carry=1
Tab[0][01100100]=> Decode+="Eins Drei Eins Eins Zwei" Carry=0
...
Zwoter Schritt;
Tab[Carry][Byte2] => Decode+="..." Carry=...
usw.
Die Tabelle könnte in Extremfällen auch noch größer werden, abhängig von der größe des Wortschatzes.
Statt sei vorzukalkulieren könnstest du sie auch erst von JS dynamisch generieren lassen. Eventuell wären sogar Hashes besser, wenn die Tabellen dünn besetzt werden.
der Zeitbedarf deines Decoders läge also bei der Zeit die Tabelle anzulegen + Bytezahl der Nachricht * Tabellenzugriffe!
Weiter oben hat dir PlanB auch einen Huffmandecoder gegooglet, aber der arbeitet wahrscheinlich auf Characterebene. Da die Zahl der Buchtsaben größenmäßig bei 30-40 liegen bräuchtest du dann auch nur kleinere Tabellen. Wenn der Wortschatz nicht begrenzbar ist, hättest du auf Silbenebene die beste Kompression! Es gibt für sowas Häufigkeitstabellen.
Soweit die Theorie, ob sichs lohnt hängt natürlich von der genauen Natur deiner Daten ab...
Tschau
LanX