python / php - 跨语言字符串压缩(使用gzcompress/urlencode/json)

2 投票
2 回答
843 浏览
提问于 2025-04-17 19:06

我在使用Python 2.6的时候,有一个程序需要把大量的HTML文本存储到AWS的DynamoDB数据库里。问题是,这些存储的数据占用了很多空间,而且在简单取数据的时候也消耗了不少计算资源。所以我在想有没有办法把这些字符串压缩成更轻便的形式。

我做了一些简单的测试,发现下面的方法有效(大大减少了DynamoDB的计算资源消耗),但我想听听大家的意见,这样做是否是最好的选择。

以下是我用Python 2.6生成一个普通文本的gzip压缩版本的代码,这个json数组里有几个键,每个键对应一个大的HTML块。

import urllib, json
str = urllib.quote(json.dumps({'foo1': 'bar'}).encode('zlib').encode('base64'))

然后我可以用PHP运行以下代码,把字符串还原成原来的数组:

json_decode(gzuncompress(base64_decode(urldecode($str))),1);

有没有人有好的建议,或者说这样做是否是实现我目标的最佳方法?

2 个回答

0

你可以使用base64编码

Python代码:

import base64
print(base64.b64encode(b"Hello World").decode())

PHP代码:

base64_decode("your base64 encoded text from the python script")
0

你真的需要把数据存成普通字符串在数据库里吗?其实你可以省略base64编码,直接把数据以二进制形式存入数据库,这样可以稍微提高代码的运行速度。反正数据是经过压缩的,所以你也无法直接查看它的内容。 http://aws.amazon.com/about-aws/whats-new/2012/08/21/dynamodb-announces-binary-data-types/

撰写回答