Http2 hpack 头表大小
Posted
技术标签:
【中文标题】Http2 hpack 头表大小【英文标题】:Http2 hpack header table size 【发布时间】:2021-12-19 12:19:15 【问题描述】:http2 动态 HPACK 头表的推荐大小是多少?这通常应该设置为高于您的标题大小吗?对此有何建议?
【问题讨论】:
【参考方案1】:作为discussed elsewhere:
我不确定您的意思是“通常是否应该将其设置为高于您的标题大小”。 SETTINGS_HEADER_TABLE_SIZE 设置所有标题的最大表大小。所以并不真正依赖任何一个标题。
此外,一些标题将能够使用静态表(例如:status: 200
),因此永远不需要在动态表中。
每个请求的其他标头可能会发生变化(例如内容长度),因此不太可能存储在动态表中。
更大的表大小意味着更高的 HPACK 效率,但客户端和服务器需要更多的内存。所以这是一个平衡。所以对于“我的 HPACK 表应该有多大”没有明确的答案。这取决于您的标头的可变性、流量和内存量。
老实说,默认值通常是有原因的默认值,因此除非您有充分的理由更改它们,或者深刻理解它们的含义,否则会坚持使用这些值。
有人说 HPACK 无论如何都是一种微优化。 “太小”的 HPACK 标头的最坏影响是每隔几个请求,可能需要发送一些完整的标头。没那么糟糕。上次我听说 nginx 甚至没有为客户端请求实现动态表,它仍然可以正常工作。
但是,如果它太大,您的 Web 服务器内存会增加,并且服务许多并发连接的能力会受到影响。在您看到流量激增之前,这可能并不明显。
因此,如果有任何事情,请避免从默认值中增加它。
【讨论】:
以上是关于Http2 hpack 头表大小的主要内容,如果未能解决你的问题,请参考以下文章