HTTP / 2服务器如何处理不需要资源的客户端?

我一直在阅读关于HTTP / 2的知识,而服务器抢占资源给客户端的想法看起来不错。 但是如果客户端不需要它,因为客户端已经从最后一次访问中caching了它呢?

似乎有一个RST_STREAM ,让客户端立即终止一个stream。 但是如果服务器速度太快,并且已经发送了,会发生什么? RST_STREAM是否有效地向已经caching的文件的服务器发送信号?

是的,这是RST_STREAM的要点。

你是正确的,这会产生风险发生得太晚,

  • 服务器 – 在收到RST_STREAM消息之前浪费时间获取资源。

  • 客户端 – 当客户端意识到不需要时,可能已经发送了一些/大部分/所有的资源,并发送重置stream。 这浪费了时间和资源(特别是在移动设备上的带宽!)。

RST_STREAM应该是最后的措施,而不是您为了防止推出资源而依赖的东西。 否则,它很容易成为一个性能问题,而不是一个解决scheme。

当需要资源的时候,我们需要做出明智的决定,而且有多种方式可以实现,但目前还没有一个可以接受的标准。 我已经使用cookie举例介绍了一种方法 ,并提出了基于Cookie和其他选项的各种其他caching摘要。 关于如何最好地实现这个, HTTP / 2规范 (可能故意)没有声明。

就我个人而言,我认为服务器推送是HTTP / 2中最有趣的部分之一,它将花费我们一段时间如何正确使用,并可能导致各种有趣的应用程序。 就像HTTP / 1.1下一些性能夸耀的技术(例如连接,spriting等等)花费了一些时间和一些实验来帮助推动协议可以做的事情 – 虽然有趣的是它们现在都变成了HTTP下的反模式/ 2 。 当HTTP / 3出现的时候,也许一些服务器推送技术将成为未来的一种方式!