我正在尝试找出启用Firestore持久性的最佳方法,并使用AngularFire调整缓存大小。
Firebase文档建议我们这样做:
firebase.firestore().settings({
cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED
});AngularFire没有提到调整这样的设置,但是深入到代码中,你看起来可以像这样传递一个"firebase.firestore.PersistanceSettings“类型的对象:
AngularFirestoreModule.enablePersistence({
experimentalForceOwningTab: true,
synchronizeTabs: true,
}),但是,这是PersistanceSettings类型中仅允许的两个属性。
我尝试在app.module.ts中创建一个构造器,并根据Firebase文档进行操作,但我甚至不确定它是否可以工作。
export class AppModule {
constructor() {
firebase.firestore().settings({
cacheSizeBytes: firebase.firestore.CACHE_SIZE_UNLIMITED,
});
}
}如何在运行时检查缓存大小设置?我做得对吗?
发布于 2021-10-21 19:26:25
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的值。
发布于 2021-10-25 21:09:45
在搜索AngularFire文档时,我找到了与离线存储相关的document。它解释了如何在应用程序中启用文件持久性,还说明了您可以使用fromCache属性测试文档是从缓存中检索还是从Firestore中检索。
若要检查是从服务器还是从缓存接收数据,请在快照事件中使用SnapshotMetadata的fromCache属性。如果fromCache为true,则数据来自缓存,可能已过时或不完整。如果fromCache为false,则数据是完整的,并且是服务器上最新的更新。
至于为Firestore设置缓存大小,似乎唯一的方法就是您一直在尝试的方法,并且它是在Firestore实例properties中设置的变量。以下是与设置cache size和启用persistence相关的文档的完整示例。
https://stackoverflow.com/questions/69666978
复制相似问题