簡體   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