繁体   English   中英

使用 AngularFire 调整 Firestore 缓存大小

[英]Adjust Firestore cache size with AngularFire

我正在尝试找出启用 Firestore 持久性和使用 AngularFire 调整缓存大小的最佳方法。

Firebase 文档建议我们这样做:

firebase.firestore().settings({
     cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED
});

AngularFire 没有提到调整此类设置,但深入研究代码,您似乎可以像这样传递类型为“firebase.firestore.PersistanceSettings”的 object:

AngularFirestoreModule.enablePersistence({
      experimentalForceOwningTab: true,
      synchronizeTabs: true,
}),

但是,这些是 PersistanceSettings 类型中唯一允许的两个属性。

我尝试在 app.module.ts 中创建构造函数并根据 Firebase 文档进行操作,但我什至不确定它是否正常工作。

export class AppModule {
  constructor() {
    firebase.firestore().settings({
      cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED,
    });
  }
}

如何在运行时检查缓存大小设置? 我做对了吗?

CACHE_SIZE_UNLIMITED-1 ,最好在app.module.ts设置:

const settings: firebase.firestore.Settings = {
  cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED
};
firebase.firestore().settings(settings);

似乎没有读取settings的方法...... cacheSizeBytes已经知道了。
并且一旦连接,也可能无法更改cacheSizeBytes的值。

搜索 AngularFire 文档,我发现他们的文档与离线存储相关。 它解释了如何在您的应用程序中启用文件持久性,以及您可以使用fromCache属性测试是否从缓存或 Firestore 中检索文档。

要检查您是从服务器还是缓存接收数据,请使用快照事件中 SnapshotMetadata 上的 fromCache 属性。 如果 fromCache 为真,则数据来自缓存并且可能是陈旧的或不完整的。 如果 fromCache 为 false,则数据是完整的并且是服务器上的最新更新。

至于为 Firestore 设置缓存大小,似乎唯一的方法是您一直在尝试的方法,它是 Firestore 实例属性中设置的变量。 以下是与设置缓存大小和启用持久性相关的文档中的完整示例。

我遇到了同样的问题,但找到了一种在 GitHub 上设置它的方法。

import { AngularFirestoreModule, SETTINGS } from '@angular/fire/firestore';

@NgModule({
  imports: [
    AngularFirestoreModule,
    AngularFireAuthModule,
    AngularFireStorageModule,
    AngularFireModule.initializeApp(environment.firebase),
 ],
 providers: [
 {
   provide: SETTINGS,
   useValue: { ignoreUndefinedProperties: true, cacheSizeBytes: 1048576 },
 };
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM