Heim >Web-Frontend >js-Tutorial >Kann JavaScript JSON-Daten clientseitig für Server mit Caches fester Größe komprimieren?
JavaScript-Implementierung von Gzip
Frage:
Gibt es eine Möglichkeit, JSON-Daten zu komprimieren? auf der Clientseite, bevor es an einen Server mit fester Größe gesendet wird Cache?
Antwort:
Bearbeiten: Für bessere Ergebnisse verwenden Sie die verbesserte LZW-Lösung unter http://pieroxy.net/blog /pages/lz-string/index.html.
Original Lösung:
Während JavaScript keine Implementierung von Gzip bereitstellt, bietet die jsolait-Bibliothek Funktionen für die LZW-Komprimierung und -Dekomprimierung. Hier ist der Code:
LZW-Komprimierungsfunktion:
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(""); }
LZW-Dekomprimierungsfunktion:
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(""); }
Das obige ist der detaillierte Inhalt vonKann JavaScript JSON-Daten clientseitig für Server mit Caches fester Größe komprimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!