云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

游戏服务器_阿里云平台架构_9元

小七 141 0

使用CloudFlare混合域分片和SPDY

注:这篇文章最初是作为2013年PerfPlanet日历的一部分出现的众所周知,域切分(domain sharding)是一件好事,在不同的域(或子域)之间共享网页中的资源。这是一件好事,因为浏览器限制了每个域的连接数:跨域拆分网页意味着更多的连接,因此页面下载速度更快。整体域分片可以带来更好的最终用户体验,并且可以成为跨web服务器共享负载的有用方法。但随着谷歌SPDY协议的采用,域名分割的情况就完全不同了。事实上,当SPDY正在使用时,域分片可能会影响性能,因此不建议使用。为了了解原因,这里有流行的4chan.org网站网站下载时没有使用SPDY,但是使用SSL(可以在没有SSL的情况下进行这种比较,但是由于时间安排非常不同,所以不太有趣)。

淘客商城-使用CloudFlare混合域分片和SPDY

您可以看到涉及到三个领域:网站(从中下载初始HTML),s.4cdn.org网站和t.4cdn.org网站. 4chan正在使用两个域来切分JavaScript、CSS和图像等资源。在第1行下载初始HTML之后,浏览器(我在这里使用ie10)查找s.4的DNS条目cdn.org网站和t.4cdn.org网站并分别打开三个连接(第2行到第7行)。在上图中,橙色表示TCP连接,紫色表示SSL协商。使用这6个连接下载资源后,将重用相同的连接(经典的HTTP/1.1 Keep-Alive行为)以获取更多的资源。最后,第16行,有一个单独的连接来发送Google分析信息。现在来看一下用SPDY/2通过googlechrome下载的同一个站点。

淘客商城-使用CloudFlare混合域分片和SPDY

第1行显示了相同类型的连接、SSL协商和页面的下载(这里完成时间为591ms,而上面的549ms)。但行为就完全不同了。第2行显示了到s.4的单个TCP连接和单个SSL协商cdn.org网站. 然后使用该连接下载s.4的所有资源cdn.org网站和t.4cdn.org网站平行的。最后,还有相同的,单独的谷歌分析连接。你看到的是斯皮迪在行动。SPDY版本稍快一点:页面在1.1s的时候就完成了;SSL没有SPDY的时候是1.3s(尽管你必须考虑ie10和Chrome之间绘制时间的差异才能真正理解这些值)。在SPDY版本中有两件重要的事情发生:首先,Chrome已经注意到s.4cdn.org网站和t.4cdn.org网站是同一个站点(它们具有相同的IP地址和s.4的证书cdn.org网站对t.4有效cdn.org网站还有:它是4的通配符证书cdn.org网站)因此它不需要单独的SSL连接:一个就可以了。然后它通过同一个SPDY连接从每个域请求资源。为此,它只需在SPDY请求中指定正确的主机。这些可以在chrome://net内部视图。在同一个SPDY连接上有两个不同主机的请求。t=1386958552557[st=1]SPDY_SESSION_SYN_流-->fin=真-->接受:*/*接受编码:gzip、deflate、sdch接受语言:en-US,en;q=0.8,fr;q=0.6缓存控制:无缓存主持人:s.4cdn.org网站方法:获取pragma:无缓存推荐人:https://www.4chan.org/方案:https网址:/js/fp-combined-compiled.7.js用户代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_7_5)AppleWebKit/537.36(KHTML,像Gecko)Chrome/31.0.1650.63 Safari/537.36版本:HTTP/1.1-->流\u id=5-->单向=错误t=1386958552577[st=21]斯皮迪会话流-->fin=真-->接受:image/webp,*/*;q=0.8接受编码:gzip、deflate、sdch接受语言:en-US,en;q=0.8,fr;q=0.6缓存控制:无缓存主持人:t.4cdn.org网站方法:获取pragma:无缓存推荐人:https://www.4chan.org/方案:https网址:/cgl/thumb/1386957763148s.jpg用户代理:Mozilla/5.0(Macintosh;Intel Mac OS X 10_7_5)AppleWebKit/537.36(KHTML,像Gecko)Chrome/31.0.1650.63 Safari/537.36版本:HTTP/1.1-->流\u id=7-->单向=错误因此,Chrome已经检测到这些域实际上是同一台机器,并且只建立了一个连接。这很好,而且不会对性能产生影响,但是切分的实际决定产生了影响。其次,注意在SPDY的案例中有两个TLS谈判(一个是网站还有一个是s.4cdn.org网站). 如果所有的资源都打开了,这个网站的加载速度会快得多网站(或者在共享证书的域上;由于这个原因,通配符证书可以很好地与SPDY连接一起工作,因为浏览器可以使用单个共享连接),因为整个下载都可以在SPDY连接中完成。因为4chan使用一个特殊的域(在具有不同证书的不同IP上)作为资源,所以有必要建立一个新的连接。在上面的示例中,所有资源必须等待DNS查找(27毫秒)、TCP连接(29毫秒)和SSL协商(71毫秒),然后SPDY连接才能开始请求它们。总共127毫秒。这个页面在1100毫秒内就完成了;如果使用了一个域,那么SPDY可以再节省127毫秒(几乎是12%的时间)。所以,对于SPDY来说,最好不要切分;对于非SPDY的域分片仍然是一种有用的技术。(如果您对实际测试数据感兴趣,IE 10/SSL测试是测试是逯NE_QCQ/).两全其美问题就变成了,你能两全其美吗?有了一个小小的DNS骗术,就有可能建立一个网站,无论SPDY是否可用。因为我没有4chan做现场实验,所以我复制了网站主页和所有包含的资源到我自己的web服务器并设置三个域:r。jgc.org网站(根域),s。jgc.org网站(相当于s.4cdn.org网站)还有t。jgc.org网站(相当于t.4cdn.org网站). 然后我手动编辑HTML和CSS,使所有链接的资源指向其中一个。jgc.org网站还有t。jgc.org网站和原来的4chan遗址一样。但是,关键的是,我对这三个域都使用了一个证书。这是使用IE10通过SSL加载的站点。

淘客商城-使用CloudFlare混合域分片和SPDY

这是一个用Chrome和SPDY加载的网站。

淘客商城-使用CloudFlare混合域分片和SPDY

如你所见,域切分在IE10中起作用。有多个到s的连接。jgc.org网站还有t。jgc.org网站域并行下载资源。同样的配置也适用于Chrome和SPDY,因为它检测到它们共享一个证书,并且对所有事情都使用一个SPDY连接(包括初始页面下载)。在Chrome中,尽管存在三个域,但只有一个TCP连接和一个DNS查找。IE10/SSL版本在1100毫秒内就完成了,使用了9个TCP/SSL连接(另外还有一个用于Google Analytics)。Chrome/SPDY版本在视觉上完成了200毫秒(900毫秒),使用了…一个SPDY连接(加上一个额外的谷歌分析连接)。如果你感兴趣的话,ie10/SSL测试在这里,Chrome/SPDY测试在这里。为了使旧的浏览器和最新的浏览器获得最佳性能,仍然应该使用闪亮的SPDY浏览器域分片,但是使用覆盖所用域的证书意味着只需要一个SPDY连接。CloudFlare让这一切变得简单CloudFlare有简单的SSL选项和按钮SPDY。通过在CloudFlare上设置子域SSL,您也将自动获得SPDY。在上面的测试中,我花了大约10分钟在上面设置测试子域jgc.org网站同时启用SSL和SPDY。谢谢感谢Andrew Galloni对SPDY和域分片之间的交互进行审查和调查的帮助。