背景简介
随着前端项目的不断增加,越来越多的公司和开发者开始使用 GraphQL 技术解决 RESTful API 出现的一些问题。GraphQL 有着优秀的查询语言,可以快速高效的完成数据请求,而且有着极为灵活的数据获取方式。
使用 GraphQL,我们需要一个专门执行 GraphQL 查询的服务器。市面上有很多 GraphQL 服务端的工具,其中最流行的之一是 Apollo Server。当我们每次向后端服务器发送一个查询时,Apollo server 会从我们的服务器端接收请求,执行这个请求并返回。
但是,当服务器端处理数据的时候会涉及到缓存问题,缓存可以快速提高网络请求的效率,缓存机制也是一个高可用,高性能系统中必不可少的处理方法。
针对上述问题,Apollo Server 也提供了一套缓存机制的 npm 包,即 apollo-server-caching。
apollo-server-caching 使用教程
安装
你可以通过 npm 安装 apollo-server-caching:
npm install apollo-server-caching --save
使用
在项目的 Apollo Server 代码中,配置使用 apollo-server-caching:
import { ApolloServer } from 'apollo-server'; import { InMemoryLRUCache } from 'apollo-server-caching'; const server = new ApolloServer({ // ... 其他配置项 cache: new InMemoryLRUCache(), });
如果你要在你的自定义缓存实现中使用,你需要从 InMemoryLRUCache 中扩展支持的接口:
-- -------------------- ---- ------- ------ - ------------ - ---- ---------------- ------ - ------------- - ---- ------------------------ ----- ------- ---------- --------------------- - -- --- ---- - ----- ------ - --- -------------- -- --- ----- ------ --- ---------- ---
配置
InMemoryLRUCache
你可以通过配置,为该缓存机制设置缓存大小、资源清理周期等信息,在执行程序时进行配置。例如:
-- -------------------- ---- ------- ------ - ------------ - ---- ---------------- ------ - ---------------- - ---- ------------------------ ----- ------ - --- -------------- ------ --- ------------------ -------- --------- -- -- -- --------------- ----- -- ----------- --- ---
sizeCalculator 是一个函数,你可以通过该函数定义缓存中每个对象所占用的空间。
RedisCache 和 MemcachedCache
Apollo Server 还提供了 RedisCache 和 MemcachedCache,分别使用 Redis 和 Memcached 作为后端进行缓存。使用缓存时,可以像下面这样为 RedisCache 和 MemcachedCache 进行配置:
-- -------------------- ---- ------- ------ - ------------ - ---- ---------------- ------ - ---------- - ---- ---------------------------- ----- ------ - --- -------------- ------ --- ------------ -- ----- --- ----- ------------ ----- ----- --- ---
-- -------------------- ---- ------- ------ - ------------ - ---- ---------------- ------ - -------------- - ---- -------------------------------- ----- ------ - --- -------------- ------ --- ---------------- -- --------- --- ------ -------------------- --- ---
代码示例
使用缓存的 Apollo Server 实例代码如下:
-- -------------------- ---- ------- ------ - ------------- --- - ---- ---------------- ------ - ---------------- - ---- ------------------------ ----- -------- - ---- ---- ----- - ------ ------ - -- ----- --------- - - ------ - ------ ----- -- -- - -- --------- ------ -------- -- -- -- ----- ------ - --- -------------- --------- ---------- ------ --- ------------------- --- ----------------------- --- -- -- - --------------- ------ ----- -- --------- ---
总结
本文主要讲解了 apollo-server-caching 的使用教程,包括了如何安装、使用、以及配置。通过实际代码示例,你可以快速掌握 apollo-server-caching 在 Apollo Server 项目中的使用方法。
缓存是提高数据查询效率的重要手段,尤其对于大规模的应用程序,缓存更是必不可少的优化手段。Apollo Server 提供的缓存机制,能够快速提高 GraphQL 查询的效率,同时提高应用的可用性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/72736