Mam obiekt, który próbuję kompresować. Jest formularzaProblemy z kompresją w javascript
[
{
array
string
},
{
array
string
},
...
]
Macierze są nie więcej niż 10-15 długości, bardzo małe w porównaniu do strun (są html, mniej więcej 170k długości). Ciągi są zwykle powtarzane lub mają ogromne nakładanie się. Więc moja intuicja mówi mi, że skompresowana wartość powinna być wartością kompresu o 1 łańcuchu, plus trochę więcej.
I JSON.stringuj ten obiekt i spróbuj go skompresować.
Większość bibliotek kompresujących źle radziła sobie z kompresją ciągów, ponieważ serwer wysyła do mnie skompresowaną gzip wersję 77kb, wiem, że może być co najmniej tak mały.
gzip-js
lzma-js
dobrą robotę Spośród może 15 bibliotek próbowałem.
Problem polega na tym, że gzip-js jest liniowy w liczbie łańcuchów. Ale lzma robi to poprawnie, gdzie tylko nieznacznie zwiększa rozmiar.
Lzma-js (poziom 2) jest bardzo wolny niestety (20s vs 1s gzip) podczas kompresowania 7mbs (około 30 ~ ciągów).
Czy istnieje biblioteka kompresująca, która jest mniej więcej tak szybka jak gzip, ale nie skaluje się liniowo na powtarzających się łańcuchach?
Czy możesz wymienić te, które wykonały złą robotę, których próbujesz?Na pewno zaoszczędzi nam czasu, aby zrezygnować z tej samej pracy, którą już przeszedłeś. –
Czy spojrzałeś na odpowiedzi na http://stackoverflow.com/questions/4570333/string-compression-in-javascript? Najlepiej ocenione łącze łączy się z tą stroną http://pieroxy.net/blog/pages/lz-string/index.html, która odwołuje się do kilku kompresji lib –
Jeśli masz trochę czasu, możesz konwertować bity na obraz (co 3-bitowe jako bixel) i zapisać jako obraz bezstratny png, najlepsza wydajność z bardzo dobrym kompresorem –