首页 > 解决方案 > Instagram 中的 query_hash 是什么?

问题描述

我第一次在 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)!感谢你们!

标签: graphql

解决方案


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

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

键值存储可以是memcached,redis

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

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


推荐阅读