Gzip의 JavaScript 구현
질문:
JSON 데이터를 압축하는 방법이 있습니까? 고정된 크기의 서버로 보내기 전에 클라이언트 측에서 캐시?
답변:
편집: 더 나은 결과를 얻으려면 http://pieroxy.net/blog에 있는 향상된 LZW 솔루션을 사용하세요. /pages/lz-string/index.html.
원본 해결책:
JavaScript는 Gzip 구현을 제공하지 않지만 jsolait 라이브러리는 LZW 압축 및 압축 해제 기능을 제공합니다. 코드는 다음과 같습니다.
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(""); }
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(""); }
위 내용은 JavaScript가 고정 크기 캐시가 있는 서버의 클라이언트 측 JSON 데이터를 압축할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!