js pako. inflate 압축 풀기 zlib 압축 파일

3340 단어
장면: 웹 전단 에서 기본 데이터 (예 를 들 어 지역 데이터, 업계, 학력, 전공, 각종 분류, 속성 등) 를 얻 을 때 서버 를 통 해 모든 기본 데이터 json 압축 패 키 지 를 한 번 에 끌 어 옵 니 다.장점: 하 나 는 데 이 터 를 줄 일 수 있 고, 다른 하 나 는 http 요청 을 많이 줄 일 수 있 습 니 다.
이 예 는 브 라 우 저 localstorage 가 위 에서 압축 을 푼 후의 대량의 데 이 터 를 저장 하 는 동시에 XML HTTPRequest 2 가 바 이 너 리 데이터 흐름 을 지원 해 야 하기 때문에 ie 저 버 전 브 라 우 저 는 적용 되 지 않 습 니 다.
\ # 방법 코드
/**
 * XMLHttpRequest2
 */
ajax2 = function (opts) {
    var XHR = new XMLHttpRequest();
    XHR.open(opts.type || 'GET', opts.url, true);
    XHR.responseType = opts.dataType || 'arraybuffer';
    XHR.onload = function(e) {
        opts.success && opts.success(this.response);
    };
    XHR.onerror = function (err) {
        opts.error && opts.error(err);
    }
    XHR.send();
};


/**
 *   zlib  
 * @param url    url  
 * @param callback            
 */
getZlibBasicData = function (url, callback) {
    //     
    function successHandler(data) {
        data = new Uint8Array(data);
        console.log(data);
        try {
            var result = JSON.parse(pako.inflate(data, { to: 'string' }));
            callback && callback({
                code: 0,
                msg: 'Success',
                data: result
            });
        } catch (e) {
            callback && callback({
                code: 2,
                msg: e,
                data: data,
                url: url
            });
        }
    };
    //     
    function errorHandle(err) {
        callback && callback({
            code: 1,
            msg: 'ERROR: getZlibXmqData() Ajax2 ...',
            data: err
        });
    };
    //     
    ajax2({
        url: url,
        // dataType: 'arraybuffer',
        // type: 'GET',
        success: successHandler,
        error: errorHandle
    });
};

\ # 사용
//      
var url = 'http://config-1253933147.file.myqcloud.com/app/xmq_data20170927344.zip';
//      json  
getZlibBasicData(url, function (res) {
    console.log(res);
});

pako 의 사용 은 깊이 연구 하지 않 았 습 니 다. 필요 한 학생 은 git 에 가서 상세 한 정 보 를 읽 을 수 있 습 니 다.
pako 원본 코드:https://github.com/nodeca/pako

좋은 웹페이지 즐겨찾기