Rumah > hujung hadapan web > tutorial js > Bolehkah JavaScript Memampatkan Bahagian Pelanggan Data JSON untuk Pelayan dengan Cache Saiz Tetap?

Bolehkah JavaScript Memampatkan Bahagian Pelanggan Data JSON untuk Pelayan dengan Cache Saiz Tetap?

Patricia Arquette
Lepaskan: 2024-12-06 13:16:11
asal
718 orang telah melayarinya

Can JavaScript Compress JSON Data Client-Side for Servers with Fixed-Size Caches?

Pelaksanaan JavaScript Gzip

Soalan:

Adakah terdapat cara untuk memampatkan data JSON pada sisi klien sebelum menghantarnya ke pelayan dengan saiz tetap cache?

Jawapan:

Edit: Untuk hasil yang lebih baik, gunakan penyelesaian LZW yang dipertingkatkan yang terdapat di http://pieroxy.net/blog /pages/lz-string/index.html.

Asal Penyelesaian:

Walaupun JavaScript tidak menyediakan pelaksanaan Gzip, perpustakaan jsolait menawarkan fungsi untuk pemampatan dan penyahmampatan LZW. Berikut ialah kodnya:

Fungsi Pemampatan LZW:

function lzw_encode(s) {
    var dict = {};
    var data = (s + "").split("");
    var out = [];
    var currChar;
    var phrase = data[0];
    var code = 256;
    for (var i = 1; i < data.length; i++) {
        currChar = data[i];
        if (dict[phrase + currChar] != null) {
            phrase += currChar;
        } else {
            out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
            dict[phrase + currChar] = code;
            code++;
            phrase = currChar;
        }
    }
    out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
    for (var i = 0; i < out.length; i++) {
        out[i] = String.fromCharCode(out[i]);
    }
    return out.join("");
}
Salin selepas log masuk

Fungsi Penyahmampatan LZW:

function lzw_decode(s) {
    var dict = {};
    var data = (s + "").split("");
    var currChar = data[0];
    var oldPhrase = currChar;
    var out = [currChar];
    var code = 256;
    var phrase;
    for (var i = 1; i < data.length; i++) {
        var currCode = data[i].charCodeAt(0);
        if (currCode < 256) {
            phrase = data[i];
        } else {
            phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
        }
        out.push(phrase);
        currChar = phrase.charAt(0);
        dict[code] = oldPhrase + currChar;
        code++;
        oldPhrase = phrase;
    }
    return out.join("");
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bolehkah JavaScript Memampatkan Bahagian Pelanggan Data JSON untuk Pelayan dengan Cache Saiz Tetap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan