客户启动的请求方法类型

时间:2018-03-15 05:01:05

标签: promise http2 server-push

http2 spec说:

  

HTTP / 2允许服务器先发制人地发送(或“推送”)响应   (以及相应的“承诺”请求)给客户   与先前客户端发起的请求的关联。

客户端发起的请求方法是否有任何限制? 我猜这通常是GET,但我想知道是否有限制,它不能是别的。

1 个答案:

答案 0 :(得分:2)

对于哪种类型的请求可以导致推送响应没有限制,但是there are restrictions as to what items can be pushed(基本上是GET请求):

  

承诺的请求必须是可缓存的(参见[RFC7231],第4.2.3节),必须是安全的(参见[RFC7231],第4.2.1节),并且不得包含请求体。

因此,如果提交表单使用了POST请求并返回HTML,那么推送该HTML所需的资源可能是有意义的。

推送资源are not pushed into the normal HTTP/2 cache used by the browser but into a separate “push cache”。这是绑定到该连接的短暂缓存。推送的资源仅从该推送缓存中检索,并且如果需要它们的东西将它们拉出此缓存,则会更永久地保存。

因此,您应该只推送推送发起者所需的资源(或之后不久的其他请求)。因此,如果您有一个OPTIONS请求导致推送资源真的会被使用吗?对OPTIONS请求没有任何限制导致推送,但如果在推送后没有立即使用推送的资源,则可能是浪费的推送。