instagram 中的 query_hash 是什么?

Sta*_*edo 3 graphql

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

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

还是我错了?

示例:这是我的请求负载

{
 "operationName":"user",
 "variables":{},
 "query":"query user {\n  users {\n    username\n    createdAt\n    _id\n  }\n}\n"
}
Run Code Online (Sandbox Code Playgroud)

这是 Instagram:

 query_hash: 60b755363b5c230111347a7a4e242001
 variables: %7B%22only_stories%22%3Atrue%7D
Run Code Online (Sandbox Code Playgroud)

(它处于 urlencode 模式)。

现在,我如何散列我的查询?我使用 NodeJS 作为后端,将 js 作为前端。我想了解它是如何工作的 x)!谢谢你们!

xwl*_*lee 6

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

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

该键值存储可以memcachedredis

Apollo Server 带有开箱即用的自动持久查询。我建议试一试。他们已经发布了一篇关于它的博客。https://blog.apollographql.com/automatic-persisted-queries-and-cdn-caching-with-apollo-server-2-0-bf42b3a313de

如果你想构建你自己的解决方案,你可以使用这个包自己做散列https://www.npmjs.com/package/hash.js

  • 每种类型的查询内容的哈希是否过期或更改? (4认同)