【问题标题】:Does firebase download all data on client devices?firebase 会下载客户端设备上的所有数据吗?
【发布时间】:2017-10-13 04:55:23
【问题描述】:

假设我的规则设置为仅对拥有的对象进行用户读/写,我想知道 firebase 客户端(IOS/Android)在设备中存储哪些数据?在这个例子中,它是否在设备上下载了不属于用户的数据,但只是阻止了它?或者只有用户拥有的对象才会下载到设备上。

有没有办法让一些子对象只保存在云中而不是本地?我担心设备中的数据库大小变得太大。

谢谢!

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    您的 Firebase 应用只能访问规则允许的数据库中的数据。安全性由 Firebase 实时数据库(而非应用)处理,因此只会下载允许用户访问的数据。

    为了让您的应用能够处理存储在数据库中的数据,需要将其下载到设备上。默认情况下,数据会被缓存,因此即使您的设备暂时失去网络连接,您的应用程序仍然可以运行。如果您enable offline capabilities,应用程序只会将其存储在本地,以允许应用程序在没有可用网络时继续工作。

    Firebase 应用会自动处理临时网络中断。缓存数据在离线时可用,并且 Firebase 会在网络连接恢复时重新发送任何写入。

    当您启用磁盘持久性时,您的应用会将数据本地写入设备,以便您的应用可以在离线时保持状态,即使用户或操作系统重新启动应用也是如此。

    Firebase 应用会自动为您处理所有这些功能。

    本地缓存的大小很少需要担心,除非您要存储或下载大量数据,否则不建议这样做。如果您的数据库很大,您应该实施策略来限制查询只能通过filteringpaginating 您的查询检索相关数据。

    【讨论】:

    • 我更感兴趣的是数据库中的所有对象是否都下载到本地设备中?还是仅将所有者具有读/写权限的对象下载到设备?
    • 只有用户具有读/写权限的对象才会下载到设备。
    • 太好了.. 感谢您的澄清。例如,如果我想将一些日志消息保存到我的实时数据库但不希望它存在于本地设备中,因为客户端不需要读取,那么最好的设计模式是什么?
    • 如果您在禁用离线功能的情况下写入数据库,我认为应用程序不会在发送此数据后保持缓存。如果这回答了您的问题,请不要忘记点击投票按钮下方的勾号接受它,谢谢!
    猜你喜欢
    • 2019-02-09
    • 2018-09-13
    • 2020-08-22
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多