js 接收 PHP gzcompress 数据

2019-10-11  本文已影响0人  _不能说的秘密i

由于一些文章内的数据是图文混排的, 中间还掺杂着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);
    })

注意


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);
    });
上一篇下一篇

猜你喜欢

热点阅读