Skip to main content
 首页 » 编程设计

python之是否值得使用 IMAP COMPRESS (DEFLATE)

2025年05月04日24kenshinobiy

Gmail 支持 IMAP COMPRESS 扩展 ( RFC4978 ),特别是 DEFLATE algorithm ( RFC1951 ) 又名 zlib/gzip。

我通常不是 Python 程序员,但我使用 Piers Lauder's 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)。有人已经这样做了吗?值得吗?

感谢反馈。非常感谢。

请您参考如下方法:

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

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

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