facebook - Firebase 实时数据库下载使用率高

标签 facebook firebase unity-game-engine firebase-realtime-database

我们正在使用 firebase 实时数据库为连接到 facebook 的用户保存每个级别的分数。我们仍在测试此功能,一切正常,但下载使用率确实很高。每次该用户打开该应用程序时,我都会下载非常少量的数据,大约 20 个字节,并且为他开始的每个级别额外下载 5 个字节。几分钟后,下载使用量开始显示超过 100kB,这是一个很大的数字,当我们将其发布给我们的用户时,不会在财务上扩展。这是我们正在使用的数据结构:

users{
  facebook_id{
    "firebase_id" : firebaseId,
    "max_level" : maxLevel,
    "stars" : numberOfStars,
    "scores" : {
      level : score,
    }
  }
}

我还做了一些 CLI 数据库分析,有 0 个非索引查询,使用似乎是正确的。 Here这是屏幕截图。

有谁知道哪里出了问题?如果这只是 SSL 开销(看起来仍然太大),请注意除了设置我们自己的服务器之外我们还可以做其他事情。

最佳答案

方法一:长数据单独存放

  • 如果这是数据结构
  • 每次用户检查他的最高级别时,都会调用每个级别的基础分数。
  • 通过将求和结果拆分到单独的路径中来避免这种情况

坏方法

users{
  facebook_id{
    "firebase_id" : firebaseId,
    "max_level" : maxLevel,
    "stars" : numberOfStars,
    "scores" : {
      level : score,
    }
  }
}

更好的方法-拆分为用户详细信息和用户分数详细信息

用户详细信息

Contains only max level and number of stars
users{
  facebook_id{
    "firebase_id" : firebaseId,
    "max_level" : maxLevel,
    "stars" : numberOfStars
  }
}

用户分数详情

  • 在单独的路径中包含关卡分数
  • 客户端可以查看users_scores/facebook_id/scores/<levelname>存在?如果存在,获取分数
users_scores{
  facebook_id{
    "scores" : {
      level1 : score1
    },
    {
      level2 : score2
    }
  }
}
  • 使用云函数计算星星总数 或者
  • 不推荐:通过阅读 stars 来计算客户部分中的总星数来自 users路径,而不是通过 users_scores .只需更新路径 users_scores/facebook_id/scores/<levelname>来自客户本身

要点

  • 而不是在每个获取请求中读取所有星星
  • 获取最后更新的星星,并将新的星星更新到它。
  • 通过仅访问单个路径更新特定级别的星级
  • 这将是第一次为空,如果他已经完成该级别,它将包含值。

关于facebook - Firebase 实时数据库下载使用率高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43762756/

相关文章:

Firebase:如何调试 onCall 函数?

unity-game-engine - 如何为不同纵横比的屏幕设置 UI 位置动画?

linux - 在 Headless Linux 上运行 Unity CLI 构建开源项目 - 许可证问题

unity-game-engine - 我可以使用设备的相机在 Unity 中拍照吗?

Android 分享 Intent 选择器

java - Facebook 用户生日为 java.util.Date

php - Facebook 评论框已过时

ios - 当系统清除内存并关闭 UIViewController 时 iOS 崩溃

cordova - Firebase native Cordova 插件

node.js - Webhook : Request body is missing data 提供的 Google Cloud HTTP 功能