用金字塔压缩所有HTTP流量

发布于 2021-01-29 15:59:59

我正在创建一个基于Pyramid框架的移动服务。因为它是移动的,所以减少带宽使用的一切都是对的。我正在考虑压缩所有流量,甚至是动态HTML页面。

金字塔框架为此提供了什么样的挂钩?还是有用于任务的WSGI中间件?我想仍然在Python级别上执行此操作,而不是Nginx /
Apache,因此我可以更好地统计gzip给受益人带来了多少。

关注者
0
被浏览
138
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先,我要强调您应该在Web服务器级别(nginx或apache)上执行此操作。有几个原因:

    1. 性能-如果在Python中执行此操作,则使用的线程之一可能正在处理执行CPU密集型压缩的请求。这比允许优化的Web服务器处理它的效率低。

    2. 阻止-大多数GZip中间件都会阻止您的响应,缓冲正文,以便它可以压缩整个响应。如果您尝试将任何响应流回客户端,这将是一个 很大的 问题,因为它将被中间件捕获。这实际上违反了WSGI规范PEP333。

    考虑到所有这些,至少在开发过程中出于调试目的,在Python中执行此操作可能很有意义。

    由于您已经在使用Pyramid,因此您已经安装了Paste。因此,您可以简单地将paste.gzipper.GzipMiddleware象这样添加到应用程序的管道中:

    [filter:gzip]
    use = egg:Paste#gzip
    compress_level = 6
    
    [pipeline:main]
    pipeline =
        gzip
        app
    

    显然,如果您不想将压缩级别从默认值6更改为,您只需将其添加egg:Paste#gzip到管道中即可代替配置过滤器并为其指定自定义名称(gzip)。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看