RESTDataSource - 如何知道响应来自获取请求还是缓存

Posted

技术标签:

【中文标题】RESTDataSource - 如何知道响应来自获取请求还是缓存【英文标题】:RESTDataSource - How to know if response comes from get request or cache 【发布时间】:2021-05-29 05:51:09 【问题描述】:

我需要从 GraphQL API 中的 REST API 获取一些数据。为此,我从 apollo-datasource-rest 扩展了 RESTDataSource

据我了解,RESTDataSource 会自动缓存请求,但我想验证它是否确实被缓存。有没有办法知道我的请求是从缓存中获取数据还是访问了 REST API?

我注意到第一个请求需要一些时间,但是下面的请求要快得多,而且每次我进行查询时都不会调用 didReceiveResponse 方法。是不是因为数据是从缓存中加载的?

我正在使用 apollo-server-express。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以按如下方式对请求进行计时:

console.time('restdatasource get req') 
this.get(url)
console.timeEnd('restdatasource get req')

现在,如果时间低于 100-150 毫秒,那应该是来自缓存的请求。

【讨论】:

以上是关于RESTDataSource - 如何知道响应来自获取请求还是缓存的主要内容,如果未能解决你的问题,请参考以下文章

Apollo RESTDataSource调用其他RESTDataSource?

使用 RESTDataSource 为 GET 请求设置“参数”

从 didReceiveResponse 回调返回 null 是不是有效?

使用 type-graphql 和 RESTDataSource 为第二个 api 调用添加字段解析器

AFNetworking:如何知道响应是不是使用缓存? 304 或 200

如何知道请求是不是来自缓存或不使用 AFNetworking