【问题标题】:Does Firestore ever purge its own document cache?Firestore 是否会清除自己的文档缓存?
【发布时间】:2020-05-04 23:17:56
【问题描述】:
假设每次应用启动时,都会将一个侦听器附加到 Firestore 中的某个文档。如果应用程序离线,假设这个文档总是在缓存中可用,假设监听器总是附加到它,是否安全? Firestore 是否会缓存一些具有更高优先级的文档,因为它们总是被访问? Firestore 是否会在幕后清除此缓存?
我之所以问,是因为我可以选择将此数据备份到客户端的磁盘上,但我想知道这是否有必要 — 何时真正使用此备份?
【问题讨论】:
-
Firestore 缓存驱逐逻辑遵循LRU 算法(首先丢弃最近最少使用的项目)。
标签:
google-cloud-firestore
【解决方案1】:
文档不会永远保留在缓存中。缓存有一个最大大小,如果缓存中的新文档会导致超出该限制,则旧文档将从缓存中逐出。如果他们清除应用程序的数据,用户也可以清除缓存。根据documentation:
启用持久性后,Cloud Firestore 会缓存从后端接收到的每个文档以供离线访问。 Cloud Firestore 设置了缓存大小的默认阈值。超过默认值后,Cloud Firestore 会定期尝试清理旧的、未使用的文档。您可以配置不同的缓存大小阈值或完全禁用清理过程。
如果您必须始终在本地有可用的文档,则应实施自己的持久性存储以获得该保证。
要详细了解缓存的工作原理,read this post。