是什么让Gmail API比IMAP更有效?

Dun*_*ton 8 imap gmail-api

我正在尝试更好地了解Gmail API.Gmail API的一个明显优势是它可以"在IMAP上实现显着的性能提升".Gmail API和协议的哪些方面允许它比IMAP更有效?

Eri*_*c D 8

例如,IMAP具有"邮箱"的概念,并且支持这意味着为每个消息存储序列号.在Gmail的IMAP中,由于每个标签都是一个文件夹,这意味着我们需要在每个标签中保留每条消息的序列.对于像"All Mail"这样可能是1,000,000条消息的东西 - 很难在服务器中跟踪它.

像线程这样的东西对于IMAP也是陌生的,但在Gmail中是原生的.Gmail后端已经过优化,可以像Gmail API一样支持线程.如果要检索线程中的所有消息,则只需在API中进行一次调用.

显着的性能改进是针对API有意义的用例(如Web和移动应用程序).如果要同步整个邮箱,IMAP可以提供良好或更好的性能,因为它可以缓存经过身份验证的连接等.


Jos*_*ley 7

回答这个问题的最佳方法是将Gmail API文档IMAP协议规范进行比较,并了解它们允许的操作类型.任何让你的东西

  • 做更多工作服务器端而不是客户端,
  • 减少往返次数,
  • 仅发送和接收您感兴趣的特定数据,或
  • 缓存状态本地

将提高性能.

一些具体的例子:(我只是涉足IMAP并且没有使用Gmail API的经验,所以我的例子可能无效.就像我说的那样,请阅读完整故事的文档.)

  • Gmail API内置支持同步客户端,包括获取最新更新列表.在IMAP中这样做更难.
  • Gmail API的搜索功能似乎比IMAP更强大.
  • Gmail API对线程的支持似乎比IMAP的可选THREAD扩展更高级别.

  • gmail 使用的 IMAP 对同步客户端有很好的支持。BTDT。Gmail 的 IMAP 线程也很好。尝试一下,你会喜欢的。最大的区别在于,在 gmail API 中,消息存在于线程中,而“邮箱”或多或少是线程的集合。在 IMAP 中,消息存在于邮箱中,线程是消息的集合。这种差异对客户端的设计产生了很大的影响。您可以为这两个接口编写良好的代码,但这会有所不同。 (2认同)