所以我想知道是否启用服务器推送或不。
我知道HTTP / 2从HTTP / 1升级,这意味着任何不支持HTTP / 2的客户端都将回退到HTTP / 1并正常进行。
但是,如果客户端支持HTTP / 2,但不支持服务器推送或主动拒绝/限制推送请求,会发生什么?
恐怕有些资源可能因此无法转移到客户端。 我应该为这种可能性做准备吗?还是不是问题?
在build立HTTP / 2连接期间,客户端将通过将SETTINGS_ENABLE_PUSH设置为0来指示它不是推送启用的。
从HTTP / 2规范 :
如果对等端点的SETTINGS_ENABLE_PUSH设置被设置为0,则不应发送PUSH_PROMISE。已设置此设置并已收到确认的端点必须将接收到的PUSH_PROMISE帧视为连接错误(第5.4.1节),types为PROTOCOL_ERROR 。
但是,如果HTTP / 2 Push过度推送客户端可能不需要的或者已经caching的资源,则HTTP / 2 Push可能会被网站所有者滥用。 客户端可以重置stream,以表明他们不想要推送的资源,但这不是很好,因为它仍然是额外的客户端和服务器的工作。
网站所有者应该使用各种方法来确保他们只推送适当的内容。 我在这个博客文章中详细介绍了一个这样简单的方法: https : //www.tunetheweb.com/performance/http2/http2-push/ 。 HTTP工作组正在研究caching摘要 ,最终应该正式确定这样做的方法,但是目前这个方法还在被定义。