在 HTTP/3 QPACK 中有一条指令用于复制动态表中的现有条目;据说它用于避免添加对旧条目的引用,这可能会阻止插入新条目。
但是,我看不出这有什么帮助。
如果动态表没有足够的空间容纳新条目而不驱逐其他条目,并且将被驱逐的条目是不可驱逐的,则编码器不得将该条目插入到动态表中(包括现有条目的副本)。
为了确保不阻止编码器添加新条目,编码器可以避免引用接近驱逐的条目。编码器可以发出重复指令(第 4.3.4 节),而不是引用这样的条目,而是引用重复项。
+--------+---------------------------------+----------+
| Unused | Referenceable | Draining |
| Space | Entries | Entries |
+--------+---------------------------------+----------+
^ ^ ^
| | |
Insertion Point Draining Index Dropping
Point
(取自 IETF-QUIC-QPACK-DRAFT16)
这里的想法是,一旦一个字段通过了耗尽索引,我们想让它的存在优先级较低,所以我们会添加一个对它的引用,让任何新的请求都引用该引用,这样旧的字段就变得不被引用了它会被删除吗?在它被删除和添加新引用之间,那些中间请求可以填充到动态表中,否则会被阻塞?
谢谢你。