【问题标题】:How do I enable compression on channels in Phoenix?如何在 Phoenix 中启用通道压缩?
【发布时间】:2021-06-17 22:55:00
【问题描述】:

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

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

非常感谢。

【问题讨论】:

  • 我知道 gzip 可用于压缩静态内容(请参阅 endpoint.ex)不确定这是否可以以某种方式应用于通道端点?

标签: elixir phoenix-framework


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    Phoenix 当前版本 (1.3.0) 或更具体:cowboy (1.1) 仅支持 websockets 的x-webkit-deflate-frame 压缩。根据我的测试,我发现只有 Safari 会发送这些请求标头,这意味着在 Chrome 上您根本不会遇到任何压缩。

    因此,如果您想要permessage-deflate 压缩,您将不得不等到 Cowboy 2.0。见docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-15
      • 2015-02-15
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      相关资源
      最近更新 更多