Instagram中的query_hash是什么?

时间:2019-01-17 15:03:34

标签: graphql

我第一次在graphql上工作,我看到Instagram哈希了他们的查询。

我搜索了一些内容,但我不知道它是否正确。哈希就像存储在缓存中的持久查询一样?

我错了吗?

示例:这是我的请求有效载荷

{
 "operationName":"user",
 "variables":{},
 "query":"query user {\n  users {\n    username\n    createdAt\n    _id\n  }\n}\n"
}

这是instagram:

 query_hash: 60b755363b5c230111347a7a4e242001
 variables: %7B%22only_stories%22%3Atrue%7D

(处于urlencode模式)。

现在,我如何哈希查询?我正在使用NodeJS作为后端,并使用js作为前端。 我想了解它的工作原理x)!谢谢你们!

1 个答案:

答案 0 :(得分:2)

持久化查询用于通过减小请求大小来提高GraphQL网络性能。

不是将完整的查询发送到很长的时间,而是将哈希发送到GraphQL服务器,该服务器将使用哈希作为键从键值存储中检索完整的查询。

键值存储可以是memcachedredis

Apollo服务器随附了自动持久查询。我建议尝试一下。他们已经发布了有关它的博客。 https://blog.apollographql.com/automatic-persisted-queries-and-cdn-caching-with-apollo-server-2-0-bf42b3a313de

如果您想构建自己的解决方案,则可以使用此包自己进行哈希处理https://www.npmjs.com/package/hash.js