如何在 Phoenix 中启用频道压缩?

How do I enable compression on channels in Phoenix?

我在 phoenix 中有一个通道可以输出大约 4KB 的数据,其中很多都是高度重复的,我想知道是否有办法为该通道打开压缩。

如果我使用的是 phoenix 控制器,这看起来相当简单,但我无法确定这是否可行或在某处记录了某个频道。

非常感谢。

您可以为来自特定端点的响应配置 gzip 压缩。

config :app_name, AppName.Endpoint,
  http: [compress: true]

正如 Endersstocke 在端点配置中设置 http: [compress: true] 所回答的那样,即使对于 websockets 也是如此。但是有一些限制:

Phoenix 当前版本 (1.3.0) 或更具体:cowboy (1.1) 仅支持 x-webkit-deflate-frame websockets 压缩。从我的测试中我看到只有 Safari 发送这些请求 header 意思是 Chrome 你根本不会遇到任何压缩。

因此,如果您想要 permessage-deflate 压缩,则必须等到 Cowboy 2.0。参见 docs