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)。有人已经这样做了吗?值得吗?
我很感激反馈。非常感谢。