Maison > interface Web > js tutoriel > JavaScript peut-il compresser les données JSON côté client pour les serveurs avec des caches de taille fixe ?

JavaScript peut-il compresser les données JSON côté client pour les serveurs avec des caches de taille fixe ?

Patricia Arquette
Libérer: 2024-12-06 13:16:11
original
772 Les gens l'ont consulté

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

Implémentation JavaScript de Gzip

Question :

Existe-t-il un moyen de compresser les données JSON côté client avant de l'envoyer à un serveur avec une taille fixe cache ?

Réponse :

Modifier : Pour de meilleurs résultats, utilisez la solution LZW améliorée trouvée sur http://pieroxy.net/blog /pages/lz-string/index.html.

Original Solution :

Bien que JavaScript ne fournisse pas d'implémentation de Gzip, la bibliothèque jsolait propose des fonctions de compression et de décompression LZW. Voici le code :

Fonction de compression 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("");
}
Copier après la connexion

Fonction de décompression 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("");
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal