我有一个PHP脚本,可以对Web服务进行查询。我希望将此查询的结果插入Firebase实时数据库中的一行。然后,将通过Android应用程序监视此firebase数据库的更改。
每行的文本量通常可以是800 Kb,所以我想压缩它。否则我的应用程序需要在OnDataChanged事件发生之前下载800 Kb。
我所做的如下(在PHP脚本中)
我接受来自Web服务的800Kb字符串。 然后我在PHP脚本中运行GZip。 结果,然后我使用Base64_Encode,这就是我将结果插入Firebase的内容。
似乎工作正常,我似乎得到了大约90%的压缩,这意味着只插入80Kb而不是800Kb。然而,这是一种“围绕房屋”的方式。
有更好的方法吗?当然必须有。有没有办法让Firebase到GZip的字符串是发送到我的应用程序?所有应用都使用Firebase SDK。
以下是写入Firebase的PHP代码...
$compressed_gzipjson = gzencode($jsonresponse, 9);
$firebase->set(DEFAULT_PATH . '/' , base64_encode($compressed_gzipjson));
确实非常欢迎任何建议。
答案 0 :(得分:1)
这听起来像是浪费在使用实时数据库。 Firebase数据库是同步小块结构化(JSON)数据的绝佳工具。它不适合非结构化数据,而且您可以正确地解压缩文本意味着不需要同步结构。
为什么不简单地将文本存储在更便宜的文件存储机制(例如Firebase Storage)中?然后将文件的URL存储在Firebase数据库中,并将其同步到客户端。