lak*_*erz 9 javascript python json flask
我经常向我的网页发送一个巨大的JSON字符串(在Flask中使用jsonify),所以我想减少数据.最简单的选择可能是删除所有换行符和空格字符,但只是给你一个例子:
普通jsonify:361KB
删除所有换行符和空格字符:118KB(哇).
压缩原始文件:35KB(双哇).
所以我基本上想知道是否有一种简单的方法来接近35KB.到目前为止我找不到一个解决方案,我可以在python和javascript(解压缩)中轻松实现.
现在,我每秒发送大约4-5MB的数据,这是 - 你猜对了 - 一点点"太多".
Rip*_*346 20
老问题,但我正在搜索这个,这是谷歌上的第一个结果。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
Run Code Online (Sandbox Code Playgroud)
使用gzip.compress我们直接压缩了一个字节字符串,它需要一个字节字符串作为输入。然后,作为来自 Leon 的链接,我们进行了自定义响应,说明内容是 gzip,因此浏览器将自行解压缩。
对于使用 JQuery ajax 请求在 Javascript 中解码,与标准请求没有任何特别的区别:
$.ajax({
url: '/data.json',
dataType: 'json',
success: function(data) {
console.log(data);
}
})
Run Code Online (Sandbox Code Playgroud)
请注意,此代码段压缩然后发送长内容。您应该考虑压缩内容所需的时间(特别是在我们有很长内容的情况下),因此请确保设置适当的压缩级别,压缩 + 发送所需的时间不会超过发送时间内容很长。
我的用例是我从慢速连接发送大内容,所以我有所有的好处在发送之前压缩内容。
Nic*_*ick 12
如果您正在寻找一个库来帮助通过 Gzip(或 Brotli)提供压缩内容,请尝试flask-compress。这很简单;这可能就是您需要做的全部:
from flask import Flask
from flask_compress import Compress
app = Flask(__name__)
Compress(app)
Run Code Online (Sandbox Code Playgroud)
Leo*_*eon 11
Web请求确实支持GZip,您可以在python中实现它.
这是有人提出这个确切的问题. 如何使用Content-Encoding:使用Python SimpleHTTPServer的gzip
但是因为你正在使用flask,所以有一个组件可以做到这一点:https: //flask-compress.readthedocs.org/en/latest/ 这里也是一个示例代码片段,如果你想对特定视图进行压缩. http://flask.pocoo.org/snippets/122/
如果你使用gzip路径,则不需要删除换行符和空格,但是如果你仍然想根据烧瓶文档,你可以通过将JSONIFY_PRETTYPRINT_REGULAR设置为false来禁用漂亮的打印. http://flask.pocoo.org/docs/0.10/config/
| 归档时间: |
|
| 查看次数: |
7517 次 |
| 最近记录: |