大多数文章都认为使用域分片会损害性能,但实际上并不完全正确。在某些条件下,单个连接可以重用于不同的域:他们决心……
是的,这是HTTP / 2的一个好处,理论上允许你为HTTP / 1.1用户保留分片,并自动为HTTP / 2用户不干。
实际情况总是有点复杂 - 主要是因为实施问题和服务器在您声明时解析为不同的IP地址。这篇博文现在已有几年了,但描述了一些问题: https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing/ 。也许它从那时起有所改善,但可以想象问题仍然存在。还有新功能 ORIGIN框架 应该有所帮助但尚未获得广泛支持。
但我认为值得重新考虑的是,分片实际上对HTTP / 1.1有好处。设置新连接(DNS查找,TCP设置,TLS握手,然后是实际发送的HTTP消息)的成本并不重要,研究表明6连接浏览器限制确实使用,不用担心通过分片添加更多。连接,spriting和内联通常是更好的选择,这些仍然可以用于HTTP / 2。在您的网站上试一试,衡量是确保这一点的最佳方式!
顺便说一句,由于这些原因(和安全性),我不太热衷于从他们的CDN使用公共库(例如jquery,bootstrap ...等)而不是在本地托管。在我看来,已经拥有您网站使用的版本已经缓存的用户的性能优势已经过时。
有了这些东西,HTTP / 1.1仍然可以在没有分片域的情况下工作。它可能(可以说)速度较慢但不会破裂。但大多数用户 可能在HTTP / 2上 那么真的值得为少数用户添加复杂性吗?这不是为现代浏览器上的人们逐步增强您的网站(并鼓励那些不升级)的方式吗?对于较大的网站(例如谷歌,Facebook等),少数群体可能仍然代表大量用户,而且我们其他人的复杂性是值得的(并且他们有资源和专业知识来处理它),我的建议不要碎片,升级到新的协议,如HTTP / 2,当它们变得普遍时(就像它现在!),但另外要降低复杂性。