【问题标题】:What makes the Gmail API more efficient than IMAP?是什么让 Gmail API 比 IMAP 更高效?
【发布时间】:2014-10-15 08:43:40
【问题描述】:

我正在努力更好地了解Gmail API。 Gmail API 的stated benefits 之一是它可以“提供比 IMAP 显着的性能改进”。 Gmail API 和协议的哪些方面使其比 IMAP 更高效?

【问题讨论】:

    标签: imap gmail-api


    【解决方案1】:

    Gmail API 效率更高的另一个原因是它只需要下载每封邮件一次。

    使用 IMAP,每封邮件必须多次下载和索引,每个 Gmail 标签(即 IMAP 文件夹)一次。

    post at Metaspike 发现了这些差异以及更多差异,包括身份验证和数据类型。

    【讨论】:

      【解决方案2】:

      例如,IMAP 具有“邮箱”的概念,并且支持这意味着为每条消息存储一个序列号。在 Gmail 的 IMAP 中,由于每个标签都是一个文件夹,这意味着我们需要在每个标签中保留每条消息的序列。对于可能包含 1,000,000 条消息的“所有邮件”之类的内容,很难在服务器中跟踪。

      线程之类的东西对于 IMAP 来说也是陌生的,但在 Gmail 中是原生的。 Gmail 后端经过优化以支持线程,就像 Gmail API 一样。如果您想检索线程中的所有消息,只需在 API 中进行一次调用。

      显着的性能改进适用于 API 有意义的用例(例如 Web 和移动应用程序)。如果您想同步整个邮箱,IMAP 可能会提供同样出色或更好的性能,因为它能够缓存经过身份验证的连接等。

      【讨论】:

        【解决方案3】:

        回答这个问题的最佳方法是将Gmail API docsIMAP protocol specification 进行比较,看看它们允许哪些类型的操作。任何可以让你

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

        将提供性能改进。

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

        • Gmail API 内置了对synchronizing clients 的支持,包括获取最近更新的列表。在 IMAP 中执行此操作是 harder
        • Gmail API 的 searching 功能似乎比 IMAP's 更强大。
        • Gmail API 对 threads 的支持似乎比 IMAP 的可选 THREAD 扩展更高级。

        【讨论】:

        • 在某些方面,不同之处在于 IMAP 有点像 Gmail 的阻抗匹配,因为它确实不匹配他们的系统设置方式,而 Gmail API 允许您直接处理事情。例如。 Gmail API 让您可以直接访问 GMail 线程和标签,而在 IMAP 中,它们作为非标准扩展或通过 hack(例如,标签作为文件夹)提供。
        • Gmail 使用的 IMAP 对同步客户端有很好的支持。 BTDT。 Gmail 的 IMAP 线程也很好。试试看,你会喜欢的。最大的区别在于,在 gmail API 中,消息存在于线程中,而“邮箱”或多或少是线程的集合。在 IMAP 中,邮件存在于邮箱中,线程是邮件的集合。这种差异对客户的设计产生了很大的影响。您可以为这两个接口编写好的代码,但这会有所不同。
        猜你喜欢
        • 1970-01-01
        • 2017-01-22
        • 2017-04-14
        • 1970-01-01
        • 2023-03-13
        • 2011-01-08
        • 2017-12-07
        • 1970-01-01
        • 2010-10-28
        相关资源
        最近更新 更多