添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Look what u made me do

打开源文件,代码注释加空行总共119行,嗯,优秀的代码都这么短。

flask-compress做的事情就是,向app中插入自己的after_request方法,在这个after_request方法中进行数据压缩,参数设置:

if (app.config['COMPRESS_REGISTER'] and app.config['COMPRESS_MIMETYPES']):

app.after_request(self.after_request)

after_response中主要的代码,根据各种参数判断要不要做压缩,压缩完了设置encoding等参数,告诉浏览器如何压缩的,使浏览器知道如何解压。

这个人说完了吗?

回答上面图片:没有。

这里提出一个问题: 根据flask-compress 的代码,它是作用在application级别的,也就是说,经过这个application的请求都执行这个after_response方法,compress是需要消耗CPU的,如果不想所有的response都压缩怎么处理?

我认为有两种解决办法:

1. 设置flask-compress提供的各种参数,来达到控制的效果

2. 这个是我想的,抽取压缩方法,结合flask的make_response方法,压缩特定的请求。

分开来说,第一点,这种产品肯定会考虑到我们的问题,如果每个请求都压缩,就有点笨了。可以设置两个参数控制是否压缩:COMPRESS_MIN_SIZE 和 COMPRESS_MIMETYPES。

COMPRESS_MIN_SIZE 控制最小压缩阈值,小于这个值的就不压缩,默认值是500. COMPRESS_MIMETYPES 控制的是压缩类型,不在类型范围内不压缩,默认值是['text/html','text/css','text/xml','application/json','application/javascript']。设置方式如下,测试代码我就不写啦,大家自己玩玩~