gpt4 book ai didi

javascript - 如何在 Python 中使用 Flask 压缩/最小化 JSON/Jsonify 的大小?

转载 作者:太空狗 更新时间:2023-10-29 20:18:31 26 4
gpt4 key购买 nike

我经常向我的网页发送一个巨大的 JSON 字符串(在 Flask 中使用 jsonify),所以我想减少数据。最简单的选择可能是删除所有换行符和空格字符,但只是举个例子:

普通 jsonify:361KB
删除所有换行符和空格字符:118KB(哇)。
压缩原始文件:35KB(双哇)。

所以我基本上想知道是否有一种简单的方法可以接近 35KB。到目前为止,我找不到可以在 python 和 javascript(解压缩)中轻松实现的解决方案。

现在,我每秒发送大约 4-5MB 的数据,您猜对了,这“有点”太多了。

最佳答案

老问题,但我正在搜索这个问题,这是 Google 上的第一个结果。Leon 的答案的链接有一个不适用于 Flask 的解决方案,而且它是旧的。现在使用 Python 3,我们可以使用标准库(和 Flask)在几行代码中完成所有工作:

from flask import make_response, json
import gzip

@app.route('/data.json')
def compress():
very_long_content = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}]
content = gzip.compress(json.dumps(very_long_content).encode('utf8'), 5)
response = make_response(content)
response.headers['Content-length'] = len(content)
response.headers['Content-Encoding'] = 'gzip'
return response

gzip.compress我们直接压缩了一个字节串,它需要作为一个字节串作为输入。然后,作为来自 Leon 的链接,我们做出自定义响应,说明内容是 gzip,因此浏览器将自行解压缩。

对于使用 JQuery ajax 请求在 Javascript 中进行解码,与标准请求没有任何特别的区别:

$.ajax({
url: '/data.json',
dataType: 'json',
success: function(data) {
console.log(data);
}
})

请注意,此片段压缩然后发送长内容。您应该考虑压缩内容所需的时间量(尤其是在我们的内容很长的情况下),因此请务必设置适当的压缩级别,压缩 + 发送不需要比发送更多的时间内容很长。

我的用例是我从慢速连接发送大量内容,所以我可以在发送之前压缩内容的所有好处。

关于javascript - 如何在 Python 中使用 Flask 压缩/最小化 JSON/Jsonify 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30165475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com