0

http2 动态 HPACK 头表的推荐大小是多少?这通常应该设置为高于您的标题大小吗?对此有什么建议吗?

4

1 回答 1

0

正如其他地方所讨论的

我不确定你的意思是“这通常应该设置为高于你的标题大小”。SETTINGS_HEADER_TABLE_SIZE 设置所有标题的最大表大小。所以并不真正依赖于任何一个标题。

此外,一些标题将能够使用静态表(例如:status: 200),因此永远不需要在动态表中。

每个请求的其他标头可能会发生变化(例如内容长度),因此不太可能存储在动态表中。

更大的表大小意味着更高的 HPACK 效率,但对客户端和服务器的内存要求更高。所以这是一个平衡。所以对于“我的 HPACK 表应该有多大”没有明确的答案。这取决于您的标头的可变性,多少流量和内存。

老实说,默认值通常是有原因的默认值,因此除非您有充分的理由更改它们或深刻理解它们的含义,否则会坚持使用这些值。

有人说 HPACK 无论如何都是一种微优化。“太小”的 HPACK 标头的最坏影响是每隔几个请求,可能需要发送一些完整的标头。没那么糟糕。最后我听说 Nginx 甚至没有为客户端请求实现动态表,它仍然可以正常工作。

但是,如果它太大,您的 Web 服务器内存会增加,并且服务许多并发连接的能力会受到影响。在您看到流量激增之前,这可能并不明显。

因此,如果有任何事情,请避免从默认值中增加它。

于 2021-11-08T10:25:10.733 回答