性能优化之:前端通过gzip压缩,解压大量数据

前言: 

    前后端交互经常会遇到在传输大量数据时造成接口严重耗时,针对这个问题,最常用的方法就是通过压缩数据,使数据体积减小,从而达到快速传输的效果。

压缩工具有很多,今天来讲讲gzip在前端的使用:

1,引入pako
import pako from "pako";

2,js中使用

this.uncompress(ssjson)
 //(1)解压缩
        uncompress(b64Data) {
            var strData = atob(b64Data);
            var charData = strData.split("").map(function (x) {
                return x.charCodeAt(0);
            });
            var binData = new Uint8Array(charData);
            var data = pako.inflate(binData);
            var strData = this.Utf8ArrayToStr(data);
            return strData;
            },
  //(2)fix解压中文乱码
        Utf8ArrayToStr(array) {
            var out, i, len, c;
            var char2, char3;
            out = "";
            len = array.length;
            i = 0;
            while (i < len) {
            c = array[i++];
            switch (c >> 4) {
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                out += String.fromCharCode(c);
                break;
                case 12:
                case 13:
                char2 = array[i++];
                out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f));
                break;
                case 14:
                char2 = array[i++];
                char3 = array[i++];
                out += String.fromCharCode(
                    ((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0)
                );
                break;
            }
            }
            return out;
        },
 // (3)压缩
    compress(json) {
      var binaryString = pako.gzip(json, { to: "string" });
      return btoa(binaryString);
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值