2

Gmail 支持 IMAP COMPRESS 扩展 ( RFC4978 ),特别是DEFLATE 算法( RFC1951 ) aka zlib/gzip。

我通常不是 Python 程序员,但我使用Piers Lauder 的 imaplib2将一个快速测试脚本放在一起,以确定启用或不启用压缩的性能。

from time import time
import imaplib2, string

def cb((response, cb_arg, error)):
        typ, data = response
        #print 'Message %s\n%s\n' % (cb_arg, data[0][5])
 
IMAP_SERVER='imap.gmail.com'
IMAP_PORT=993
IMAP_USERNAME='*********'
IMAP_PASSWORD='*********'

def gogmail(compress):
    start = time()
    M = imaplib2.IMAP4_SSL(IMAP_SERVER, IMAP_PORT, debug=0)
    M.login(IMAP_USERNAME, IMAP_PASSWORD)
    if(compress):
        M.enable_compression()
    M.SELECT(readonly=True)
    typ, data = M.SEARCH(None, 'ALL')
    fetch_list = string.split(data[0])[-100:]
    for num in fetch_list:
        M.FETCH(num, '(RFC822)', callback=cb, cb_arg=num)   
    M.LOGOUT()
    end = time()
    print end - start

print 'Compressed  '
print '------------'

for x in range(0, 50):
    gogmail(1)

print 'Uncompressed'
print '------------'
    
for x in range(0, 50):
    gogmail(0)

如果我在我的 Python 代码中犯了一个明显的新手错误,请纠正我。

我已经运行了这个测试脚本几次。有时压缩访问的平均速度更快,有时不是。平均平均值和访问时间的差异从来没有太大(访问 100 条消息的单个收件箱访问可能需要 4 到 17 秒之间的任何时间)。一致的结果将使我的决定更容易!访问是通过 SSL 我在想可能有一些固有的压缩(我不知道)。

您认为在访问 Gmail IMAP 时是否值得使用压缩?

顺便说一句,我想使用 JavaMail(而不是 Python),但我知道我需要大量自定义 JavaMail 以支持压缩(可能使用Jessie)。有人已经这样做了吗?值得吗?

我很感激反馈。非常感谢。

4

1 回答 1

0

我不认为启用压缩会有很大的不同,仅仅因为 100 条消息是很小的数据量。假设一条消息是 1KB(一条长明文消息),那么您的收件箱就是 100KB。让我们假设压缩比为 5:1(这在最好的情况下不太可能),因此压缩下载现在为 20KB。

如今,任何健全的互联网连接都至少以 1Mbps 或 125KB/s 的速度运行。因此,在这些被高估的假设下,您可以节省不到一秒钟的数据传输成本。这与连接滞后和 gmail 方面的处理相形见绌。

另一方面,启用压缩会丢失什么?

于 2011-09-12T11:11:18.263 回答