http2 spec说:
HTTP / 2允许服务器先发制人地发送(或“推送”)响应 (以及相应的“承诺”请求)给客户 与先前客户端发起的请求的关联。
客户端发起的请求方法是否有任何限制? 我猜这通常是GET,但我想知道是否有限制,它不能是别的。
答案 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请求没有任何限制导致推送,但如果在推送后没有立即使用推送的资源,则可能是浪费的推送。