【发布时间】:2017-11-25 20:45:07
【问题描述】:
spec 说:
一旦客户端收到一个 PUSH_PROMISE 帧并选择接受 推送响应,客户端不应该发出任何请求 承诺的响应,直到承诺的流关闭之后。
这是否解释了报价:
在承诺流关闭之前,客户端不应向本地存储的承诺内容发出任何请求。推测这是因为客户端应该等待所有承诺的内容在本地到达;在流关闭之前读取可能包含不完整的信息。
【问题讨论】:
标签: http2
spec 说:
一旦客户端收到一个 PUSH_PROMISE 帧并选择接受 推送响应,客户端不应该发出任何请求 承诺的响应,直到承诺的流关闭之后。
这是否解释了报价:
在承诺流关闭之前,客户端不应向本地存储的承诺内容发出任何请求。推测这是因为客户端应该等待所有承诺的内容在本地到达;在流关闭之前读取可能包含不完整的信息。
【问题讨论】:
标签: http2
规范说客户端不应该对承诺的资源发出任何请求;报价谈到访问客户端上承诺的资源数据;这两件事是相关但独立的。
我认为答案取决于客户端的实现。
例如,如果推送的资源是图像,则客户端可能决定使用已经到达的数据开始渲染图像 - 即使尚未完成,并在数据到达时继续渲染图像。
同样的情况也可能适用于推送的 CSS:客户端可能会使用已经到达的数据开始解析它 - 即使不完整;这并不意味着客户端可以应用 CSS 到 DOM,只是它会解析它。
浏览器可能决定最好等待推送的资源完成后再访问它们;但一般来说,客户端不需要等待,当然规范也没有强制要求访问客户端上的推送资源的任何行为。
【讨论】: