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