美文网首页
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