Apollo Kotlin 中的缓存
介绍
Apollo Kotlin支持多种客户端缓存格式,以满足不同目的。它内置的归一化缓存特别适用于以高效、去重的方式存储 GraphQL 操作结果。
此外,Apollo Kotlin还支持使用服务器端缓存操作字符串,通过持久查询。
以下是所有支持的缓存的摘要
缓存 | 描述 |
---|---|
内置 归一化缓存 | 去重 GraphQL 响应数据,使您的应用程序能够将其用作 UI 的真相之源。还可以动态响应对该数据的变化。包括内存和 SQLite 缓存,并且您可以使用这两者来结合内存速度与 SQLite 持久性。 |
内置 HTTP 缓存 | 在 HTTP 层缓存响应数据。启动更快,比归一化缓存使用更少的 CPU,但重复数据,并且不能作为真相之源。 |
外部缓存 | 如果您已经使用外部缓存(如Room或SQLDelight),则可以与Apollo Kotlin一起使用它。您不是使用Apollo处理网络和数据存储域,而是使用为网络生成的模型并将它们映射到您自己的数据库模型。 |
持久查询(APQ) | 使用 APQ,客户端将大多数查询的 哈希值 发送到服务器,而不是发送查询本身。这使得请求变得更小,并可以使用GET请求代替POST请求。这反过来又使得在CDN级别缓存结果成为可能。服务器还会缓存您的查询字符串,这意味着它不需要每次发送特定查询时都进行解析。 |
客户端和服务器端缓存不是互斥的,大多数全栈应用程序都使用两种缓存。使用与 持久查询 相关的标准化缓存可以帮助您最小化网络请求次数,同时也充分利用CDN处理必需的请求。