0
点赞
收藏
分享

微信扫一扫

前端实现gzip压缩与解压

之前分享了《 前端实现本地文件夹打包成zip压缩包 》,今天来分享前端实现GZIP压缩与解压。说到GZIP,一般会先想到 .gz 压缩包文件,以及对 Web 站点文件(主要是针对文本内容)采用GZIP压缩HTTP传输。本文要讲的是,前端对过大的传输消息内容进行GZIP压缩,主要是下面两种应用场景:


  • 过大的消息内容频繁发送,从网络流量方面考虑,希望得到降低;
  • 传输机制对消息内容大小有限制,比如,自定义的 WebSocket 消息。

废话不说,直接上干货。

import pako from 'pako';
 
/** 压缩文本字符串 */
export function zipText(str: string) {
  return Buffer.from(
    pako.gzip(encodeURIComponent(str))
  ).toString('base64');
}
 
/** 解压文本字符串 */
export function unzipText(str: string) {
  return decodeURIComponent(
    pako.ungzip(Buffer.from(str, 'base64'), { to: 'string' }),
  );
}
 
/** 生成对象的JSON字符串并压缩 */
export function zipObj(obj: Object) {
  return zipText(JSON.stringify(obj));
}
 
/** 解压JSON字符串并解析成对象 */
export function unzipObj(str: string) {
  return JSON.parse(unzipText(str));
}

举报

相关推荐

0 条评论