我在文档中读到Firebase SDK会自动从缓存中删除最不使用的文档。我在预测以下情况下会发生什么时遇到问题:
在我的主页中,我有
favorite subjects
和 all subjects
。
favorite subjects
始终会被获取,因为它始终显示。
all subjects
仅当用户访问该页面时才获取。
我通过在本地将收藏的主题的文档 ID 保存为字符串数组来获取这些收藏的主题。 然后我使用以下方法从 cache 检索它们:
let subjectsIds = userDefaults.object(forKey: subjectsKey) as? [String]
let query = db.firestore.subjects.whereField(FieldPath.documentID(), in: subjectsIds)
为了节省带宽,主题文档包含
last_updated
类型的字段 Timestamp
。
我首先获取缓存中的所有主题,然后获得最大的 last_updated
值。
然后我使用以下方法从服务器获取更新的文档:
let date = getGreatestLastUpdated()
let query = db.firestore.subjects.whereField("last_updated", isGreaterThan: date)
我担心用户长时间不导航到
all subjects
页面,导致缓存中的所有主题都被删除,除了收藏的主题之外,因为它们总是被提取。这将导致使用我的方法无法从服务器检索收藏主题之后尚未更新的主题。这就是 Firebase IOS SDK 中缓存删除的工作原理吗?