首先,我要强调您应该在Web服务器级别(nginx或apache)上执行此操作。有几个原因:
性能-如果在Python中执行此操作,则使用的线程之一可能正在处理执行CPU密集型压缩的请求。这比允许优化的Web服务器处理它的效率低。
阻止-大多数GZip中间件都会阻止您的响应,缓冲正文,以便它可以压缩整个响应。如果您尝试将任何响应流回客户端,这将是一个 很大的 问题,因为它将被中间件捕获。这实际上违反了WSGI规范PEP333。
考虑到所有这些,至少在开发过程中出于调试目的,在Python中执行此操作可能很有意义。
由于您已经在使用Pyramid,因此您已经安装了Paste。因此,您可以简单地将
paste.gzipper.GzipMiddleware象这样添加到应用程序的管道中:
[filter:gzip]use = egg:Paste#gzipcompress_level = 6[pipeline:main]pipeline = gzip app
显然,如果您不想将压缩级别从默认值6更改为,您只需将其添加
egg:Paste#gzip到管道中即可代替配置过滤器并为其指定自定义名称(
gzip)。



