Graphql 和往返。这只是ios应用程序的问题吗?

2024-03-09

我正在重新审视 graphql,我试图理解为什么节省往返对开发人员有好处。提出请求的费用这么贵吗?我有网络开发背景。

让我们将标准 Rest api 与 graphql api 进行比较。

我需要检索用户的个人信息及其朋友列表。传统的 Rest api 可能需要 2 次调用,一次调用获取个人信息,另一次调用获取好友。

使用 graphql,我可以通过一个请求得到相同的结果。

但作为一名前端开发人员,我希望我的页面有尽可能短的停滞期。我想尽快只渲染页面的一部分,而不是一次性等待我需要的所有信息然后渲染页面。

现在根据我的理解,graphql 的创建部分是为了解决移动应用程序 api 问题。与并行请求相比,iOS 应用程序是否有某些东西可以使一次性加载所有数据更有利?还是我还缺少其他东西?


所以一般来说,您控制的系统(即后端)内的网络流量很快。向外界发出的请求可能需要 205 毫秒(200 毫秒网络,5 毫秒数据),但在内部可能只需要 6 毫秒(1 毫秒网络,5 毫秒数据)。

如果您想构建应用程序的屏幕,那么requires发出两个 REST 请求,因为第二个请求取决于第一个请求的结果,您需要(考虑到这些粗略数字)410 毫秒来获取渲染屏幕所需的数据。

使用 GraphQL(或任何其他整合数据的网关层),您将在略高于 212 毫秒的时间内获得所有内容(GraphQL 服务器的延迟为 200 毫秒 + 每个内部调用的延迟为 6 毫秒)。

在您可以并行发出所有请求的情况下(即它们不依赖于其他请求的数据),性能优势并不那么明显,但您会发现这些情况实际上非常罕见。您的应用程序的复杂性会增加。

GraphQL 的一般经验法则是,您的初始查询会获取足够的数据以使页面正常运行,如果有不太重要的内容,您始终可以使用另一个查询来获取该内容。

除了性能优势之外,让移动设备发出更少的网络请求对于电池寿命来说也是一个巨大的胜利。网络使用成本高昂,应尽可能避免。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Graphql 和往返。这只是ios应用程序的问题吗? 的相关文章

  • iOS 上邮件到达时收到通知吗?

    当邮件到达标准邮件应用程序时 有没有办法让应用程序收到通知 更准确地说 我想编写一个应用程序 它能够从标准邮件应用程序读取传入的电子邮件 其中包含自定义 txt 格式的新联系人或事件 然后 应用程序应将此新联系人 事件添加到 ipad 反之
  • 如何在 Cocoa with Core Data 中上传和存储文件?

    我有一个应用程序 我希望能够将文件上传到其中 我可以想象序列化数据 将其放入数组中 然后序列化数组并将其放入核心数据中 但这似乎不太正确 我还可以想象将文件复制到应用程序的支持文件中 获取这些文件的 NSURL 并存储数组或 NSURL 无
  • 快速从 appDelegate 中 popToRootViewController

    我试图从应用程序委托弹出到导航堆栈的根视图控制器 并且在将 obj c 中的内容转换为 swift 时遇到一些问题 obj c 中的工作原理 UINavigationController navigationController UINav
  • iOS swift 应用程序启动时出现黑屏

    我有个问题 当我启动我的应用程序时 会看到黑屏几秒钟 然后出现启动屏幕 我的启动画面不是默认的 我使用了视图控制器 因为我的启动画面有一个动画 我搜索了一个解决方案 我得到了这个 在我的闪屏加载 iPhone 之前出现黑屏 https st
  • REST API 路由最佳实践

    我想知道当订单是一种资源时 为以下场景创建 REST API 的最佳实践是什么 获取数据库中的所有订单 当然不是实际场景 仅供理解 通过订单ID获取订单 根据订单ID获取单个订单 单个 GET 路由是否可以用于所有这些场景 或者我们应该针对
  • 剪裁为形状的 SwiftUI 图像在上下文菜单中具有透明填充

    在我的 SwiftUI 应用程序中 我的资产目录中有一张宽高比为 1 1 的图像 在我的代码中 我有一个Image使用不同的宽高比查看 将图像裁剪为新尺寸 Image My Image resizable aspectRatio conte
  • 如何在 Swift 4 中以编程方式将 IBAction 添加到 uibutton?

    如何以编程方式将 IBAction 添加到 uibutton button addTarget self action Selector buttonAction for touchUpInside func buttonAction se
  • 当我启动项目时没有 viewcontroller.swift 文件 [重复]

    这个问题在这里已经有答案了 我尝试启动该项目并使用视图控制器 但我没有看到它 仅appdelegate和scenedelegate和contentview 下面的代码应该添加到视图控制器中 但我不知道添加到哪里 它不断给我一条错误消息 指出
  • 如何同时关闭并弹出到视图控制器

    我的家庭视图控制器是Tabbarcontroller 从选项卡栏我导航到 A Viewcontroller TabarViewcontroller gt A 视图控制器 从A 视图控制器 我推 B 视图控制器 从B Viewcontroll
  • Objective c:如何只删除目录下的所有文件但保留目录本身

    我发现下面的代码可以删除objective c中的文件 但我只想删除目录下的所有文件Caches并保留目录Caches itself 有人可以建议这样做的方法吗 Thanks NSFileManager filemgr filemgr NS
  • 如何在模式中嵌套两个 graphQL 查询?

    我创建了一个GraphQL模式有两个字段 都使用resolve 从 mongoDB 获取数据 这样 查询 article id Dn59y87PGhkJXpaiZ title articleContent id Dn59y87PGhkJXp
  • 我以前没见过的 CGRect 语法

    我在一些示例代码中看到了下面的语法 但不确定我是否理解它 CGRect imageRect CGRect size baseImage size 这只是初始化的一种简写方式吗CGRect相当于 CGRect imageRect CGRect
  • ios 8 opengl es 1.1 已停产?

    我们即将在 iOS 应用商店上推出一款游戏 最近我们发现它无法在 iOS 8 上运行 游戏加载到黑屏 但其他一切似乎都可以运行 可以听到音乐 对触摸屏有反应 但显示屏上没有任何反应 我们的引擎相当旧并且使用 OpenGL ES 1 1 我现
  • NSPredicate 查询不包含特定字符串

    对这个问题进行了高低查找 但找不到我的答案 我正在查询核心数据以查找不等于指定字符串的所有记录 例如 所有不等于当前会话ID的记录 我已经尝试过这些但无济于事 NSPredicate predicate NSPredicate predic
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • 使用prefersLargeTitles 和 UITableView 平滑滚动

    我在使用时遇到了滚动问题prefersLargeTitles并添加了UITableView 如果我设置prefersLargeTitles在导航控制器中 其根是UITableViewController一切都很好 导航大标题的滚动方式与我们
  • 如何更改 UISwitch 关闭状态的默认颜色?

    我想更改 UISwitch 中 onTintColor 的颜色以表示关闭状态 切换位于表格视图中 并且以编程方式进行切换 settingsSwitch setBackgroundColor UIColor whiteColor settin
  • 使用 Parse.com 上传视频

    我是解析新手 正在尝试保存视频并将其上传到云端 这是我正在使用的代码 但是当调用 didButtonAction 时 它不断收到错误 我相信问题出在将视频保存为文件时 但我不知道如何解决这个问题 先感谢您 void imagePickerC

随机推荐

  • 如何以编程方式锁定 BLACKBERRY 设备(6.0)?

    如何以编程方式锁定黑莓设备 6 0 有一个API叫做 ApplicationManger locksystem true 但在 6 0 中已不再使用 根据BlackBerry OS 7 1 API 文档 http www blackberr
  • 无法使用 TagBuilder 组合标签

    我正在尝试构建一个组合标签 第一个标签 span class requiredInidicator span 第二个标签
  • 访问另一个 osgi 包中的资源?

    我使用 eclipse 插件项目向导 使用 eclipse Helios 创建了两个 OSGI 包 A 和 B 在捆绑包 B 的清单文件中 我添加了捆绑包 A 作为依赖项 此外 我已导出 A 中的包 以便它们对 B 可见 我在捆绑包 A 中
  • 一列中有多个值的 SQL 查询

    我一直在桌子上敲着头试图解决这个问题 我有一个表 用于存储作业信息以及作业未完成的原因 原因为数字 01 02 03 等 待处理的工作可能有两个原因 如果您选择两个原因 它们将存储在同一列中 并以逗号分隔 这是一个来自JOBID table
  • .one() 和 .scalar() 有什么区别

    之间的主要区别是什么 one and scalar 在 SQLAlchemy 中 因为两者都执行相同的工作 我看到一些网站 例如教程点 com https www tutorialspoint com sqlalchemy sqlalche
  • 从已建立的 SqlConnection 确定 TLS 版本

    在实时系统中 我们使用以下命令与各种 MSSQL 服务器建立多个连接SqlConnectionC 中的对象 由于客户端正在将其 SQL 服务器更新到 TLS 1 2 我想知道是否有办法确定活动连接上正在使用哪种 TLS 实现 如果可能的话
  • List 上的 Any() 方法无法按预期工作

    我正在 winforms 中开发 net 4 6 这里的代码来自测试控制台应用程序 有一次我有一张清单DateTime我需要弄清楚这个列表是否包含特定日期 为此我正在尝试使用Any 在名单上 即使列表确实包含所需的日期 Any 回报fals
  • 自动换行不适用于 UILabel

    使用自动布局我无法在代码中覆盖我的标签 我已经在 IB 中设置了标签属性 Lines 0 LineBreaks Word Wrap 但我将高度设置为单行 因为选择的单元格决定了标签中的文本内容 所以有时标签只有一行 在我看来DidLoad
  • 日期格式中月份和日期的固定长度?

    有没有什么方法可以将日期对象格式化为固定长度的日和月 以便在列中良好对齐 例如 15 May 2010 10 January 2010 代替 15 May 2010 10 January 2010 Thanks 看看java util Fo
  • 通过 C++ 程序在 PowerShell 中打印 unicode 字符

    我的最终目标是通过 C 程序将一些非拉丁文本输出写入 Windows 中的控制台 cmd exe 对我毫无帮助 所以我得到了最新的 闪亮的 PowerShell 版本 支持 unicode 我已经确认我可以 输入非 unicode 字符和
  • jQuery - 如何检查特定 DIV 中是否单击了任何链接?

    在 HTML 代码中 我的页面包含 div a href Link1 a a href Link2 a div div a href Link info a a href My profile a div div a href Link1
  • Flask 和 sys.excepthook

    我想将全局异常处理对象添加到我的 Flask web 项目中 在创建应用程序类的主模块中 我添加了代码来覆盖sys excepthook 这是简单的测试代码 import sys def my exception hook exceptio
  • 字符串分词器、分隔符

    我正在使用这段代码 StringTokenizer tokenizer new StringTokenizer line 分割以下字符串 hi my name is visghal what is yor name name being t
  • after_initialize 和 after_find 回调在 Active Record 对象生命周期中的顺序?

    来自 Rails 指南 回调可以挂接到 Active Record 对象的生命周期中 按照执行顺序 它们是 从 Rails Guides 复制的 创建对象 before validation after validation before
  • 组合最新第一个事件未触发

    我想知道我的应用程序何时离线并重新上线 我在以下位置注册了以下事件rxjs const online Rx Observable fromEvent window online const offline Rx Observable fro
  • 如何设置 WebMatrix/Razor 响应的内容类型?

    我想在我的 WebMatrix cshtml 文件中返回一些 XML 而不是 HTML 如何更改内容类型标头 使用 cshtml 文件顶部的 Response ContentType 属性 然后将 XML 包含在视图的内容中 Respons
  • 如何计算文本的真实SHA1?

    As in 我的最后一个问题 https stackoverflow com q 48327289 287948 参见那里的详细信息 我正在使用 SELECT encode digest x text bytea sha1 hex FROM
  • 检查 UITextView 中的文本是否由于自动换行而换行

    如何检查文本是否在UITextView由于自动换行而转到下一行 我目前有代码来检查用户是否输入新行 从键盘 BOOL textView UITextView textView shouldChangeTextInRange NSRange
  • 使用 OpenCV 时找不到模块 cv2

    我已经安装了OpenCV https en wikipedia org wiki OpenCV在 Raspberry Pi 上的 Occidentalis 操作系统 Raspbian 的一个变体 上 使用这个脚本 https github
  • Graphql 和往返。这只是ios应用程序的问题吗?

    我正在重新审视 graphql 我试图理解为什么节省往返对开发人员有好处 提出请求的费用这么贵吗 我有网络开发背景 让我们将标准 Rest api 与 graphql api 进行比较 我需要检索用户的个人信息及其朋友列表 传统的 Rest