美文网首页
js 接收 PHP gzcompress 数据

js 接收 PHP gzcompress 数据

作者: _不能说的秘密i | 来源:发表于2019-10-11 17:36 被阅读0次

由于一些文章内的数据是图文混排的, 中间还掺杂着html代码的, 此时如果 PHP 直接返回就会导致请求特别忙,
所以考虑压缩字符串然后base64响应给客户端, 客户端使用 pako.js 来转换回 json

服务端

<?php

// 模拟一个json数据
// 使用 gzcompress 压缩
// base64编码 压缩过的字符串 响应给前端

$json = json_encode( [
    'id' => 1001,
    'name' => 'alex',
]);

$gzstr = gzcompress($json);

exit(base64_encode($gzstr));

客户端

<script src="https://cdn.bootcss.com/axios/0.19.0/axios.min.js"></script>
<script src="./js/pako.js"></script>

axios
    .get("test.com")
    .then(({ data }) => {
        console.log("---base64:", data);

        // 解码base64
        data = atob(data);

        // 将base64解码后的字符串解压
        data = pako.inflate(data, { to: 'string' });
        console.log(data);
    })
    .catch(err => {
        console.log(err);
    })

注意

  • node 环境没有 atobbtoa 函数, 也就是说 nodejs 做服务端的时候需要安装 js-base64
  • node 环境有 zlib 相关处理模块

const axios = require("axios");
const zlib = require('zlib');
axios
    .get("test.com")
    .then(({data}) => {
        console.log("---base64---", data);
        data = zlib.inflateSync(new Buffer(data, 'base64')).toString();
        console.log(data);
    })
    .catch(err => {
        console.log(err);
    });

相关文章

网友评论

      本文标题:js 接收 PHP gzcompress 数据

      本文链接:https://www.haomeiwen.com/subject/ryrxmctx.html