【问题标题】:Is there any way to avoid delay for getting data when high speed internet connection available?(no delay if it there is no internet connection)有什么方法可以避免在高速互联网连接可用时延迟获取数据?(如果没有互联网连接,则不会延迟)
【发布时间】:2021-02-17 01:20:29
【问题描述】:

我有 100 个文档
文件编号
0001
0002
0003
....
....
0100

如果我们加载 5 个 id 为 001,002,004,005,006 的文档
然后 firestore 对 5 次文档读取收费,然后我们再次加载(调用读取操作查询)id 为 004,005,006,007,008,001,002 的文档
然后 Firestore 将对 7 次文档读取收费
第一次我们已经加载了 ID 为 001,002,004,005,006 的文档,第二次或刷新时我们正在加载已经加载的文档和一些新文档
这里要避免多次从服务器读取文件和从现金读取文件,需要避免firestore超过文件读取费用
怎么做?

Firestore 有现金加载选项,但它只会从现金加载,而不是从服务器加载如果它失败了,那么它会从现金中读取,没关系,但我需要修改订单

现在发生的情况是,如果非互联网所有数据加载速度更快而没有显示进度,如果有互联网,它将需要很少秒加载,它将显示加载程序

当我们在没有 fireabase 的情况下执行此操作时,我们的应用程序将仅显示加载一次,然后首先它将显示来自 sqlite 的数据,然后当达到 api 调用响应时,我们将在 ui 中更新,因此用户不会面对任何加载程序,但使用 firestore 用户需要等待进度条完成

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    乍一看,您似乎可以为此用例使用 firebase firestore 缓存。这可以很容易地完成,例如在 JS 中:

    documentRef.get({ source: 'server' }) // or 'cache'

    这确实会降低成本,但是它可能总是从您的本地缓存中读取,并且永远不会到达服务器以获取文档中的新更改。这可能是您想要的,但只有当您的文档(不可变)且永不更改时,它才显得实用。因此您将能够阅读新文档,但如果它们发生更改,您可能看不到更改。请阅读更多关于this here

    更好的建议是更改您的应用逻辑。所以,不要以这种方式阅读文档:

    001,002,004,005,006

    004,005,006,007,008,001,002

    最好以这样的分页方式阅读它们:

    001,002,003, 004,005,006

    007,008,009,010,011,012

    您可以通过使用 Firestore 中的分页概念轻松实现:

    var first = db.collection("cities")
            .orderBy("population")
            .limit(25);
    
    return first.get().then(function (documentSnapshots) {
      // Get the last visible document
      var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1];
      console.log("last", lastVisible);
    
      // Construct a new query starting at this document,
      // get the next 25 cities.
      var next = db.collection("cities")
              .orderBy("population")
              .startAfter(lastVisible)
              .limit(25);
    });
    

    check Firestore documentation for more details

    【讨论】:

      猜你喜欢
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2019-03-24
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多