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 调用添加字段解析器