Firebase 離線功能
我該怎麼用?磁碟永續性還是 keepSynced 呼叫?
根據我的經驗,我可以說它總是取決於你的應用程式的工作方式,以及你如何管理應用程式的事務和資料庫。例如,如果你的應用程式中使用者只是在編寫和讀取資料,但他無法刪除或編輯資料,那麼使用 DiskPersistence
將是正確的選擇。
此外,DiskPersistence
會將資料儲存在快取中,這意味著你的應用將在使用者的裝置中使用更多空間,這可能不是你的最佳選擇。
另一方面,如果你的應用程式管理了大量複雜的事務並且你的資料經常更新,那麼你可能應該避免使用 DiskPersistence
並在要保持新鮮的引用中使用 keepSynced
。
為什麼?
DiskPersistence
儲存在本地檢索的資料,如果你不將它與連續的 ListenerValueEvents
一起使用,有時會導致大量的去同步顯示你的資料。例如:
- 使用者 A 在你的應用上寫入
Hello World
訊息,該訊息已收到使用者 B 的接收 - 使用者 B 在手機中下載來自使用者 A 的訊息並看到訊息
Hello World
- 使用者 A 編輯他的訊息“Firebase 很酷”。
- 使用者 B 仍然會觀看
Hello World
訊息,即使他更新了資料,因為當 Firebase 過濾時,快照參考是相同的。
為了避免這種情況,最好的辦法是將連續的監聽器保留在你想要跟蹤的引用中。
我可以一起使用嗎?
當然,你可以,並且在大多數應用程式中可能最好避免下載大量資料,並且即使使用者沒有連線也可以讓使用者使用你的應用程式。
如果你不關心在使用者裝置中使用快取空間,我建議你在 FirebaseDatabase
物件中啟用 diskPersistence
,並在每個參考中新增 keepSync
標記,這些標記可能在很短的時間內有很多次,或者你想保留新鮮的。