laravel - 与RESTful相比,GraphQL GET响应时间慢

标签 laravel graphql graphql-php

我想测试GraphQL端点和RESTful端点的响应时间,因为我以前从未使用过GraphQL,因此我将在下一个Laravel项目中使用它。

因此,我正在使用Lighthouse PHP软件包通过Laravel应用程序提供GraphQL终结点,并且我还创建了一个RESTful终结点。

两个端点(GraphQL和RESTful)都旨在从我的本地数据库中获取所有用户(250个用户)。

因此,基于测试,我在这里注意到的是,当我在Postman上测试这两个终结点时,RESTful终结点响应比GraphQL终结点更快。

我能知道为什么在两个端点都获取相同数据时GraphQL端点的响应比RESTful需要更多的时间吗?

GET请求的GraphQL端点结果(响应时间:88ms)
enter image description here

POST请求的GraphQL端点结果(响应时间:88ms)
enter image description here

RESTful端点结果(响应时间:44ms)
enter image description here

最佳答案

没有免费的午餐。

GraphQL提供了许多有用的功能,但是这些相同的功能总是会产生一些开销。尽管REST端点可以有效地从某个源中提取数据并将其重新分配给客户端,但即使对于相对较小的数据集,GraphQL也将不得不进行一些额外的处理来解析和验证响应中的每个字段。更不用说解析和验证请求本身所需的处理。而且,这种开销只会随着返回数据的大小而变得更大。

如果要向镜像GraphQL的REST端点引入其他功能(请求和响应验证,对部分响应的支持,对单个响应字段进行别名的能力等),您会发现两者之间的性能差距正在缩小。即使那样,尽管如此,它仍然还是苹果和橘子的比较,因为GraphQL服务将经历某些 Action ,仅仅是因为spec所说的。

关于laravel - 与RESTful相比,GraphQL GET响应时间慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56801991/

相关文章:

php - GraphQL 响应中的自定义映射键

php - 通过将 CSS 文件合并到一个文件中来加快网站速度 - Laravel

php - 搜索 Laravel 后记住下拉选择选择

javascript - 如何修复 graphql 突变类型名称错误

parse-platform - 如何使用 GraphQL + parse.com 构建 Web 应用程序?

graphql - 在 Relay Modern 中设置多个网络层

php - 如何在我的 FormRequest 中添加自定义验证器?

php - 为什么在 Laravel 中的 DB::select 中使用 DB::raw?

laravel-5.7 - 在 Router.php 第 366 行:传递给 Illuminate\Routing\Router::group() 的参数 1 必须是数组类型,

php - 如何在不编写长查询的情况下查询所有 GraphQL 类型字段?