2016-05-30 4 views
0

У меня есть PHP-скрипт, который делает запрос к веб-сервису. Я хочу, чтобы результаты этого запроса были вставлены в строку в базе данных реального времени Firebase. Затем эта база данных firebase отслеживается для изменений в приложении для Android.Сжатие данных в Firebase

Количество текста в строке может составлять 800 КБ, поэтому я хотел бы сжать это. В противном случае моему приложению понадобится загрузить 800 Kb до того, как произойдет событие OnDataChanged.

То, что я сделал это следующим образом (в PHP скрипт)

Я принимаю строка 800кбит образуют веб-службы. Затем я запускаю GZip в скрипте PHP. В результате я затем использую Base64_Encode, и именно это я вставляю результат в Firebase.

Кажется, что все нормально, и я, кажется, получаю около 90% сжатия, а это означает, что только 80 КБ вставлено вместо 800 КБ. Это, однако, способ «обойти дома».

Есть ли лучший способ сделать это? Конечно, должно быть. Есть ли способ получить Firebase для GZip, строка отправляет в мое приложение? В конце концов приложение использует Firebase SDK.

Вот PHP код, который пишет Firebase ...

$compressed_gzipjson = gzencode($jsonresponse, 9); 

$firebase->set(DEFAULT_PATH . '/' , base64_encode($compressed_gzipjson)); 

Любые советы очень приветствуются действительно.

+0

Небольшая коррекция, 780 КБ сжимается до 110 КБ, все еще довольно хорошо. – JohnMoll

+0

Вместо добавления исправления в комментарии щелкните ссылку [edit] (http://stackoverflow.com/posts/37534908/edit) по вашему вопросу, и вы можете исправить ее на месте. –

ответ

1

Это звучит как невероятно расточительное использование базы данных реального времени. База данных Firebase - отличный инструмент для синхронизации небольших фрагментов структурированных (JSON) данных. Это не идеально подходит для неструктурированных данных и тот факт, что вы в порядке gzipping текста означает, что нет необходимости синхронизировать структуру.

Почему вы просто не храните текст в более дешевом устройстве хранения файлов (например, Firebase Storage)? Затем сохраните URL-адрес файла в базе данных Firebase и синхронизируйте его с клиентами таким образом.

+0

Эта информация будет меняться каждые пять или шесть минут, а новости о клиентах Android будут уведомляться каждый раз. Будет ли параметр Firebase Storage инициировать изменения для клиентов Android при изменении содержимого файла? – JohnMoll

+0

@JohnMoll, в то время как в хранилище Firebase нет уведомлений в реальном времени, вы можете использовать БД Realtime, чтобы уведомить клиента о загрузке файла из хранилища. –

+0

Что-то не так с тем, что я делаю сейчас? Он работает нормально, я просто хочу убедиться, что нет лучшего способа, прежде чем я посвящу этому методу? – JohnMoll

Смежные вопросы