Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript firebase实时web数据库是否具有PWA脱机功能_Javascript_Firebase_Firebase Realtime Database_Progressive Web Apps_Offline - Fatal编程技术网

Javascript firebase实时web数据库是否具有PWA脱机功能

Javascript firebase实时web数据库是否具有PWA脱机功能,javascript,firebase,firebase-realtime-database,progressive-web-apps,offline,Javascript,Firebase,Firebase Realtime Database,Progressive Web Apps,Offline,我有一个web项目,我使用了很多firebase实时数据库,现在我想把我的应用程序转换成PWA,所以我想做两件事 当用户安装应用程序时,我希望缓存数据库的某些部分 当用户脱机并转到试图从firebase下载内容的页面时,我希望从缓存返回此数据 当用户执行某些操作时,通常是在线的,我将数据保存在数据库中,我希望firebase将其保存到“缓存”中,当连接出现时,将其保存到数据库中 看起来firebase for android可以做到这一点 (ttps://firebase.google.com/

我有一个web项目,我使用了很多firebase实时数据库,现在我想把我的应用程序转换成PWA,所以我想做两件事

  • 当用户安装应用程序时,我希望缓存数据库的某些部分
  • 当用户脱机并转到试图从firebase下载内容的页面时,我希望从缓存返回此数据
  • 当用户执行某些操作时,通常是在线的,我将数据保存在数据库中,我希望firebase将其保存到“缓存”中,当连接出现时,将其保存到数据库中
  • 看起来firebase for android可以做到这一点 (ttps://firebase.google.com/docs/database/android/offline-capabilities)

    但是当我阅读网络文档时,我不确定这是否可行
    ()

    Firebase realtime DB仅为移动(iOS/Android)开发提供离线功能。如果您需要脱机持久性,那么您应该选择

    您将收到您在问题中指出的功能。每当用户读取某些文档时,这些文档都会在本地缓存,甚至可以脱机使用(完整的CRUD操作可用)。有40MB的缓存阈值,超过该阈值后,将删除最旧的文档。您可以更改此值,增加或减少缓存量

    要启用它,请执行以下操作:

    //For mobile development, it is turned on by default
    firebase.firestore().enablePersistence() 
      .catch(function(err) {
          if (err.code == 'failed-precondition') {
              // Multiple tabs open, persistence can only be enabled
              // in one tab at a a time.
              // ...
          } else if (err.code == 'unimplemented') {
              // The current browser does not support all of the
              // features required to enable persistence
              // ...
          }
      });
    

    我(关于PWAs系列的一部分)在这里解释了如何使用Cloud Firestore离线持久性来克服缓存API限制,因为它只允许缓存GET请求。

    那么你应该选择Cloud Firestore。
    这里的问题是我已经在实时数据库中编写了很多代码。你认为在我的例子中最好(最简单)的方法是将完整的应用程序重写到firestore吗?自从上次我使用realtime DB已经有很长一段时间了,但就我所记得的而言,API的差异并没有那么大。我不知道您是如何设计您的解决方案的,但我还必须将实时数据库解决方案移植到Firestore解决方案中,这不是一项大的工作。因此,我建议转到Firestore,特别是考虑到离线存储和PWA的好处。我还将此解决方案用于我的项目(如我的PWA文章中所述)。